【问题标题】:Add values to an array, print all values, and the sum of all values in an array in C#将值添加到数组中,打印所有值,以及 C# 中数组中所有值的总和
【发布时间】:2015-08-18 09:53:57
【问题描述】:

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

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[]);

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

【问题讨论】:

  • 而不是使用数组使用 ArrayList
  • 还有一个更大的问题:如果一个 var 类型的 double 用作累加器加上另一个 int var 用作计数器可以完成这项工作,为什么还要使用数组。最好的问候,
  • ArrayList???不,它几乎已被弃用。使用 List 或 List !

标签: c# arrays loops while-loop


【解决方案1】:

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

(第二个旁注)

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

(结束第二个旁注)

所以,回答你的问题,

将值添加到数组中,打印所有值,以及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));
    

使用任何一个,这是你的选择。

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

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

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

【讨论】:

  • 谢谢。我会投票给你,但我仍然是菜鸟。你的建议很有帮助。我什至不知道列表是什么。我还在考虑逻辑和设计。
猜你喜欢
  • 2016-10-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-13
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
相关资源
最近更新 更多