gpt4 book ai didi

C# 如何停止控制台程序等待下一行的输入?

转载 作者:行者123 更新时间:2023-12-02 11:50:56 25 4
gpt4 key购买 nike

所以我才刚刚开始,我正在创建一个控制台程序,用户将在其中输入一个 int。它应该继续询问 int 直到输入“ok”。当他们输入“ok”时,它应该将他们输入的所有数字相加。

我遇到的问题是,当它要求用户输入时,我输入一个数字并按 Enter 键。然后它移动到下一行并再次等待输入。在下一行输入一个数字可以让程序继续工作。如何让程序接受第一个输入并从那里继续?

下面的代码,我希望我的问题有意义。

<小时/>
class Program
{
static void Main(string[] args)
{
bool tag = true;
List<int> numbers = new List<int>();
while (tag == true)
{
Console.Write("Please enter a number or 'ok' to end: ");
if (Console.ReadLine().Equals("ok"))
{
tag = false;
}
else
{
int numb = Int32.Parse(Console.ReadLine());
numbers.Add(numb);
}
}

int total = 0;
foreach (int n in numbers)
{
total = total + n;
}
Console.WriteLine("All numbers added together equals: " + total);
}
}

最佳答案

每次迭代您应该只从控制台读取一次。

//[...]
while (tag == true)
{
Console.Write("Please enter a number or 'ok' to end: ");
var input = Console.ReadLine();
if (input.Equals("ok"))
{
tag = false;
}
else
{
int numb = Int32.Parse(input);
numbers.Add(numb);
}
}
//[...]

每次调用 Console.ReadLine 时,用户都必须输入内容 - 因为调用一次是为了与“Ok”进行比较,再调用一次是为了解析,用户必须输入数字两次。

如果您使用输入作为循环条件,您可以进一步省略 tag 变量:

var input = "";
var numbers = new List<int>();
while((input = Console.ReadLine()) != "ok")
{
numbers.Add(int.Parse(input));
}

如果用户输入的内容既不是“ok”也不是有效的整数,那么所有这些都不会发生任何错误处理。为此,您应该看看 int32.TryParse .

关于C# 如何停止控制台程序等待下一行的输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59155893/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com