2015-04-01 70 views
0
internal class Invoice 
{ 
    public static decimal[] Total = 
     { 
      InvoiceLineItem.quantity[0] * InvoiceLineItem.pricePerUnit[0], 
      InvoiceLineItem.quantity[1] * InvoiceLineItem.pricePerUnit[1], 
      InvoiceLineItem.quantity[2] * InvoiceLineItem.pricePerUnit[2], 
      InvoiceLineItem.quantity[3] * InvoiceLineItem.pricePerUnit[3], 
      InvoiceLineItem.quantity[4] * InvoiceLineItem.pricePerUnit[4], 
      InvoiceLineItem.quantity[5] * InvoiceLineItem.pricePerUnit[5], 
     }; 

    private decimal total1; 
    private decimal total2; 

    public void Customer1() 
    { 
     for (var i = 0; i < 3; i++) 
      Console.WriteLine(String.Format("{0,-15} {1,-20} {2,-15} {3,-15} {4,-10}", 
       InvoiceLineItem.productNumber[i], 
       InvoiceLineItem.description[i], 
       InvoiceLineItem.quantity[i], 
       InvoiceLineItem.pricePerUnit[i], 
       InvoiceLineItem.Total[i])); 
    } 

    public void Customer2() 
    { 
     for (var k = 3; k <= 5; k++) 
     { 
      Console.WriteLine(String.Format("{0,-15} {1,-20} {2,-15} {3,-15:C} {4,-10:C}", 
       InvoiceLineItem.productNumber[k], 
       InvoiceLineItem.description[k], 
       InvoiceLineItem.quantity[k], 
       InvoiceLineItem.pricePerUnit[k], 
       Total[k])); 
     } 
    } 

    public void Customer1Total() 
    { 
     for (var i = 0; i <= 2; i++) 
     { 
      total1 += Total[i]; 

      Console.WriteLine(String.Format("\nTotal of Customer 1:{0:C}", total1)); 
     } 
    } 
} 

我正在努力將方法Customer1Total()中的for循環打印一次。我需要輸出total1只打印一次,但它打印3次遞增總計。基本上我只需要這個for循環的最後結果,但我看到所有的增量。另外對於額外的信息,我打電話給我的主要方法customer1total打印。如何只打印一次for循環? C#

謝謝。

+1

只是移動'Console.WriteLine'的外部循環 – Grundy 2015-04-01 08:53:36

回答

1
public void Customer1Total() 
{ 
    for(int i = 0; i <= 2; i++) 
    { 
     total1 += Invoice.Total[i];    
    } 

    //Move write line outside the loop 
    Console.WriteLine(String.Format("\nTotal of Customer 1:{0:C}", total1)); 
} 
0

Console.WriteLine語句是循環體中,將其移動後把它執行循環結束後:

for(int i = 0; i <= 2; i++) 
{ 
    total1 += Invoice.Total[i]; 
} 
Console.WriteLine(String.Format("\nTotal of Customer 1:{0:C}", total1)); 

而且,要知道,因爲total1是一個類級別的變量,其值將在Customer1Total()的調用之間持續存在,導致每次調用該函數時都會增加。