C# 在控制台应用程序中使用while循环求和数字时出现意外结果

C# 在控制台应用程序中使用while循环求和数字时出现意外结果,c#,while-loop,console-application,C#,While Loop,Console Application,我正在尝试制作一个程序,在用户输入OK之前对数字求和。 程序进行求和,但返回的结果不好 我不确定我的错误在哪里 int sum = 0; Console.WriteLine("Enter number:"); int num = Convert.ToInt32(Console.ReadLine()); while (Console.ReadLine() != "OK") { sum += num; } Console.WriteLine(sum); 在while

我正在尝试制作一个程序,在用户输入OK之前对数字求和。 程序进行求和,但返回的结果不好

我不确定我的错误在哪里

int sum = 0;
Console.WriteLine("Enter number:");
int num = Convert.ToInt32(Console.ReadLine());
while (Console.ReadLine() != "OK")
    {
       sum += num; 
    }
Console.WriteLine(sum);

在while循环中不保留使用enter的数字。 您需要将readline输入变量

var num = Console.Readline();
sum += num; //parse first

while
循环中,您需要更新num:

int num = Convert.ToInt32(Console.ReadLine());
while (Console.ReadLine() != "OK")
{
    num = Int32.Parse(Console.ReadLine());
    sum += num; 
}
另外,请注意,如果您需要您的程序更安全一点,您可以使用以下方法:

int num;
if(Int32.TryParse(Console.ReadLine(), out num)) {
    //do something.. 
}
else {
    //do something else.. like end program, throw exception etc.
}

将数字的字符串表示形式转换为其32位有符号 整数等价。返回值指示转换是否成功 成功


通过这种方式,您可以在输入
字符串
不是有效转换的实例中执行某些操作。示例:如果有人输入不能转换为
int
cat
,如果没有
TryParse
,则会使程序崩溃。您需要在每次迭代中输入一次数字,并每次存储一次。因此,从
Console.ReadLine()
检索到的每个值都需要在赋值语句中捕获,如果不是“OK”,则转换为数字

我想你在追求这个:

int sum = 0;
string input;

Console.WriteLine("Enter number: ");
while ((input = Console.ReadLine()) != "OK")
{
    int inputNum = Convert.ToInt32(input);
    sum += num;

    Console.WriteLine("Enter number: ");
}
语句
(input=Console.ReadLine()
将用户输入分配给
input
变量,然后分配语句返回
input
的值。然后将该值与
OK
进行比较。 获取输入并检查的另一种方法是:

Console.WriteLine("Enter number: ");
input = Console.ReadLine()
while (input != "OK")
{
    ...
    Console.WriteLine("Enter number: ");
    input = Console.ReadLine()
}
int和=0;
Console.WriteLine(“输入编号:”);
int num=int.Parse(Console.ReadLine());
while(总和
问题出在哪里?你能给出一个输入的例子,输出是什么,以及你期望它是什么吗?你读入一个数字,然后再读入第二次以检查“ok”。你在运行它时考虑到了这个问题吗?如果你不这样做,那么每一秒都会扔掉一个数字。你需要读一行()转换为一个字符串…首先检查它是否也是int。所有这些都需要在while循环中。如果确定是第一个输入,则会出现强制转换异常。请为所做的更改添加解释。仅代码回答而没有解释往往会使人困惑,对其他读者没有帮助。如果添加解释(例如,您使用了x,您应该使用y)您的答案将更加完整。
int sum = 0;
Console.WriteLine("Enter number:");
int num = int.Parse(Console.ReadLine());
while (sum< num)
{
     sum++;
}
Console.WriteLine(sum);