2015-04-01 2 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)); 
     } 
    } 
} 

Мне сложно распечатать цикл for в методе Customer1Total() только один раз. Мне нужен вывод total1 только для печати, но он печатает 3 раза, добавляя итоговые значения пошагово. В основном мне нужен только последний результат цикла for, но я вижу все приращения. Также для дополнительной информации я вызываю метод customer1total в моем основном для его печати.Как распечатать цикл for только один раз? C#

спасибо.

+1

просто переместите наружную петлю 'Console.WriteLine' – Grundy

ответ

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(), в результате оно увеличивается при каждом вызове функции.

Смежные вопросы