在C#中向数组添加值,打印所有值以及数组中所有值的总和

时间:2015-06-03 23:55:30

标签: c# arrays loops while-loop

我想创建一个循环,询问价格,然后在每次迭代发生时将该价格存储在数组的新对象中。

double itemPrice = 0;
double totalPrice = 0;
const double OVER_FIFTY_DISCOUNT = .1;
double priceSentinal = 0;
Console.WriteLine("Please input the price of your item. Enter '0' if you have no more items.");
itemPrice = Convert.ToDouble(Console.ReadLine());

while (itemPrice != priceSentinal) 
{

    Console.WriteLine("Please input the price of your item.");
    itemPrice = Convert.ToDouble(Console.ReadLine());
    double[] originalPrices = itemPrice.ToDoubleArray();

    if (itemPrice >= 50)
    {
        itemPrice = itemPrice * OVER_FIFTY_DISCOUNT;
    }

    totalPrice = totalPrice + itemPrice;
    double[] allPrices = itemPrice.ToDoubleArray();  // how do I place every iteration of itemPrice
    Console.WriteLine("Your total Price is " + totalPrice); //into a new array value?
}

//How do I print every object in an array onto the screen?
//How do I add all of the objects within an array together and print them onto the screen?

Console.WriteLine("The prices of your items before discounts are " + originalPrices[]);
Console.WriteLine("The total price of your items before discounts is " originalPrices[]);
Console.WriteLine("The prices of your items after discounts are " + allPrices[]);
Console.WriteLine("The total price of your items after discounts is " + allPrices[]);

我不知道如何为循环的每次迭代向double数组添加新对象。我也不知道如何将数组中的每个对象打印到屏幕上,我也不知道如何在数组中添加所有对象并将它们打印到屏幕上。有人可以帮我修改我的代码吗?

1 个答案:

答案 0 :(得分:3)

tl; dr :这有点啰嗦,但希望你能通读全部并学到一些东西。您可以使用许多工具来完成这些任务,但从基础开始可能是最好的。 (提示:请确保查看链接,它们非常有帮助)

这里有几件事你想要研究并学习如何使用。

首先,您需要查看Lists

解释

列表是类似于数组的数据结构,您可以动态添加值。使用列表的示例如下:

// Create a new list that can hold integers
List<int> listOfInts = new List<int>();

// Add values to the list
listOfInts.Add(1);
listOfInts.Add(2);

其次,您需要查看forforeach循环。

循环

while循环一样,forforeach循环允许您重复代码。但是,与while不同,forforeach循环允许您重复某组值。这允许您通过在值上重复字符串连接代码来轻松构建字符串:

根据上面的代码,我们可以创建一个包含每个数字的字符串,如下所示:

string numbersString = "";
foreach(int number in listOfInts)
{
    numbersString += number.ToString() + " ";
}

(旁注)

现在,上面的代码并不是构建字符串的最佳实践,但它演示了如何在值集合上使用foreach。 (查看String.Join方法以获得从列表/数组构建字符串的简便方法)

(尾注)

因此,结合列表和循环的两个想法,你可以计算这样的总和:

int sum = 0;
foreach(int number in listOfInts)
{
   sum += number;
}
// sum == 3

(第二旁注)

同样,上面的代码可能不是你自己写的。更常见的情况是,您可以使用LINQSum()扩展方法来计算集合中值的总和。

(结束第二旁注)

所以,回答你的问题,

  

在数组中添加值,打印所有值以及C#

中数组中所有值的总和

使用list作为值:

List<double> values = new List<double>();

// inside a loop somewhere
values.Add(aValue);

通过以下任一方式打印所有值:

  1. 使用循环和Console.Write()

    foreach(double value in values)
    {
        Console.Write("{0} ", value);
    }
    
  2. 使用循环将值添加到string,然后Console.WriteLine()

    string finalString = "";
    foreach(double value in values)
    {
        finalString += value.ToString() + " ";
    }
    
  3. 使用String.Join()

    Console.WriteLine(String.Join(" ", values));
    
  4. 使用其中之一,这是您的选择。

    最后,使用以下任一值对所有值求和:

    1. 循环和求和变量(参见总和示例)
    2. Sum()扩展方法:

      using System.Linq;
      //...
      double sum = values.Sum();