我想将列表中的数字相乘,但不知道如何解决该问题。我的代码有效,井号在列表中,除了小于零的井号。我写了一个produkt(engl,product)变量,但是不知道在哪里以及如何使用它。用户停止程序,按数字0,然后弹出消息产品:(英语乘积为:),然后应从列表中乘以数字。这是我的代码。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace Vjezba11_kolokvij1
{
class Program
{
static void Main(string[] args)
{
int broj;
List<int> produktBrojeva = new List<int>();
do
{
Console.WriteLine("Unesite broj: ");
int.TryParse(Console.ReadLine(), out broj);
if (broj <= 0)
{
Console.WriteLine("Krivi unos.");
}
else
{
produktBrojeva.Add(broj);
}
} while (broj != 0);
Console.WriteLine();
int produkt;
for (int i = 0; i < produktBrojeva.Count; i++)
{
Console.WriteLine(produktBrojeva[i]);
}
}
}
}
答案 0 :(得分:2)
您想用什么乘以数字?基本上所有东西都在那里。您创建列表并遍历列表,您只需要进行乘数即可。
编辑:您似乎想将每个数字彼此相乘。所以:
int produkt = 1;
for (int i = 0; i < produktBrojeva.Count; i++)
{
produkt *= produktBrojeva[i];
}
Console.WriteLine(produkt);
您需要检查是否有溢出。产品可能会变得很大。也许您想使用long而不是int。
答案 1 :(得分:2)
您的显示循环应类似于:
int produkt = 1;
for (int i = 0; i < produktBrojeva.Count; i++)
{
produkt = produkt * produktBrojeva[i];
}
Console.WriteLine(produkt);
或者更好的是:
// start with "nothing"
int? produkt = null;
for (int i = 0; i < produktBrojeva.Count; i++)
{
// if we already assigned the first value, we multiply it.
if(produkt.HasValue)
produkt = produkt.Value * produktBrojeva[i];
else
// there wasn't a value set, just set the first value.
produkt = produktBrojeva[i];
}
// only display the produkt, when it has a value.
if(produkt.HasValue)
Console.WriteLine(produkt.Value);
else
Console.WriteLine("There isn't a value");
关于您的代码的一些说明:
int.TryParse(Console.ReadLine(), out broj);
您应该检查TryParse的结果,因为如果可以解析字符串,它将返回一个布尔值。如果输入A,它将在broj中输出0
。但这不是零。
if(int.TryParse(Console.ReadLine(), out broj))
{
// rest of the code.
}
else
Console.WriteLine("Invalid input");
答案 2 :(得分:2)
希望这可以解决您的问题。基本上是您的代码,我做了一些小的更改。虽然有效,但我建议使用Here中所述的计算方法。
另一种选择是使用Linq进行计算Multiply up Values from Array
class Program
{
static void Main(string[] args)
{
int broj;
List<int> produktBrojeva = new List<int>();
do
{
Console.WriteLine("Unesite broj: ");
int.TryParse(Console.ReadLine(), out broj);
if (broj <= 0)
{
Console.WriteLine("Krivi unos.");
}
else
{
produktBrojeva.Add(broj);
}
} while (broj != 0);
Console.WriteLine();
//Initialize with 1
int produkt = 1;
for (int i = 0; i < produktBrojeva.Count; i++)
{
//Calculate Product
produkt *= produktBrojeva[i];
Console.WriteLine(produktBrojeva[i]);
}
//Write Product to Console
Console.WriteLine($"Product {produkt}");
}
}
答案 3 :(得分:1)
最简单的方法:
var produkt = produktBrojeva.Aggregate((a, x) => a * x);
或者如果集合可能为空:
var produkt = produktBrojeva.Aggregate(0, (a, x) => a * x);
不要忘记添加一个using System.Linq;