我想创建一个循环,询问价格,然后在每次迭代发生时将该价格存储在数组的新对象中。
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数组添加新对象。我也不知道如何将数组中的每个对象打印到屏幕上,我也不知道如何在数组中添加所有对象并将它们打印到屏幕上。有人可以帮我修改我的代码吗?
答案 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);
与while
循环一样,for
和foreach
循环允许您重复代码。但是,与while
不同,for
和foreach
循环允许您重复某组值。这允许您通过在值上重复字符串连接代码来轻松构建字符串:
根据上面的代码,我们可以创建一个包含每个数字的字符串,如下所示:
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);
通过以下任一方式打印所有值:
使用循环和Console.Write()
:
foreach(double value in values)
{
Console.Write("{0} ", value);
}
使用循环将值添加到string
,然后Console.WriteLine()
:
string finalString = "";
foreach(double value in values)
{
finalString += value.ToString() + " ";
}
Console.WriteLine(String.Join(" ", values));
使用其中之一,这是您的选择。
最后,使用以下任一值对所有值求和:
Sum()
扩展方法:
using System.Linq;
//...
double sum = values.Sum();