Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何提示用户输入可变数量的值_C#_Methods - Fatal编程技术网

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

C# 如何提示用户输入可变数量的值,c#,methods,C#,Methods,最近了解了params以及在方法中使用它的目的,我创建了这个: public int add(params int[] args) { int Total = 0; for (int i = 0; i < args.Length; i++) { Total += args[i]; } return Total; } 但如果我想传递未知数量的用户输入,该怎么办 大概是这样的: Console.WriteLine(n.add(Con

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

public int add(params int[] args)
{
    int Total = 0;

    for (int i = 0; i < args.Length; i++)
    {
        Total += args[i];
    }

    return Total;
}
但如果我想传递未知数量的用户输入,该怎么办

大概是这样的:

Console.WriteLine(n.add(Convert.ToInt32(Console.ReadLine()),Convert.ToInt32(Console.ReadLine())));
问题是这样我必须编写
Convert.ToInt32(Console.ReadLine())很多次


有没有更好的办法?例如,如果用户输入3个数字,它会将它们相加,但如果下一次用户输入5个数字,它会将其相加……等等。

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

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());

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

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());

params int[]
数组参数将采用一系列
int
参数,或者采用一个
int
数组(对于
parmas对象[]
等,这是非常正确的)。因此,您可以向
add(params int[]args)
方法传递任意大小的int数组:

var a = new [] { 1, 2, 3 };

add(a);
实际上,这就是你如何在你的案例中使用它。您可以将任意数量的整数添加到
列表
,然后将其转换为数组:

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());

params int[]
数组参数将采用一系列
int
参数,或者采用一个
int
数组(对于
parmas对象[]
等,这是非常正确的)。因此,您可以向
add(params int[]args)
方法传递任意大小的int数组:

var a = new [] { 1, 2, 3 };

add(a);
实际上,这就是你如何在你的案例中使用它。您可以将任意数量的整数添加到
列表
,然后将其转换为数组:

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());

不知道我是否明白你在问什么。add函数接受一个int数组,因此传入任意数量的参数都可以。如果您希望最小化将参数传递给中的add函数所需的转换量,您可以让add函数在add函数的for循环中接受字符串数组并解析为int。是否希望用户输入类似于
12 5 24 17
的内容,然后生成总数?这与您目前得到的答案不同。不确定我是否理解您在这里提出的问题。add函数接受一个int数组,因此传入任意数量的参数都可以。如果您希望最小化将参数传递给中的add函数所需的转换量,您可以让add函数在add函数的for循环中接受字符串数组并解析为int。是否希望用户输入类似于
12 5 24 17
的内容,然后生成总数?这与您当前得到的答案不同。