如何提示用户输入可变数量的值

时间:2017-09-15 20:16:21

标签: c# methods

最近了解了params以及在方法中使用它的方法,我创建了这个:

int Add = n.add(2,34,4,5,6);
int Add2 = n.add(1, 2, 3, 4, 5, 6);

Console.WriteLine(Add);
Console.WriteLine(Add2);

我可以称之为

Console.WriteLine(n.add(Convert.ToInt32(Console.ReadLine()),Convert.ToInt32(Console.ReadLine())));

但是如果我想传递一个未知数量的用户输入呢?

这样的事情:

Convert.ToInt32(Console.ReadLine());

问题在于,这种方式我必须多次写forever start app.js

有没有更好的方法呢?就像用户输入3个数字一样,它会将它们相加,但如果下次用户键入5个数字,则会将其相加而不是....等等。

2 个答案:

答案 0 :(得分:1)

听起来你想要做的就是让用户在程序运行时输入数字,并在用户“完成”时停止。你必须有某种退出条件。用户输入“=”或者告诉程序用户输入了要添加的数字的东西。

int Sum=0;
string s="0";
while (!s.Equals("=")) {
    Sum += Convert.ToInt16(s);
    Console.Write("Type a number (Enter = to get the sum): ");
    s = Console.ReadLine();
}
Console.WriteLine("The sum is " + Sum.ToString());

答案 1 :(得分:1)

params int[]数组参数将采用一系列int个参数,或者int的单个数组(这与{{{{}}相同。 1}}等等)。因此,您可以将parmas object[]方法传递给任意大小的整数数组:

add(params int[] args)

实际上,这就是您在案例中使用它的方式。您可以向var a = new [] { 1, 2, 3 }; add(a); 添加任意数量的整数,然后将其转换为数组:

List<int>

但是在这里我是如何总结那个整数列表的:

List<int> ints = new List<int>();

while (true) {
    var s = Console.ReadLine(s);

    int n;
    if (Int32.TryParse(s, out n)) {
        ints.Add(n);
    } else {
        break;
    }
}

int sum = add(ints.ToArray());