0

我正在尝试创建一个程序,它要求用户输入整数并在while循环中将它们相加,然后当输入负数时,循环结束,但由于某种原因我找不到添加方法向上用户添加到总数中的数字,它只显示小计旁边最初为 0 的总数(用户输入的金额)

int iNumber =0;
int iTotal = 0;
int iSubTotal = 0;

//Prompt user to enter two values
Console.WriteLine("Enter value you want to add to total value or a negative number to end the loop");

while (iNumber >= 0)
{
    iSubTotal = Convert.ToInt32(Console.ReadLine());
    Console.WriteLine("The Total is now " + iSubTotal + iTotal);

    if (iNumber < 0)
    {
        Console.WriteLine("You have not passed the loop");
        Console.WriteLine("The Total is now " + iTotal);
    }

    //Prevent program from closing
    Console.WriteLine("Press any key to close");
    Console.ReadKey();
}
4

5 回答 5

1

您没有将附加项分配给此处的变量“iSubTotal + iTotal”

iTotal += iSubTotal;
Console.WriteLine("The Total is now " + iTotal);

而不是这两行

iSubTotal = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("The Total is now " + iSubTotal + iTotal);
于 2013-11-12T15:53:23.510 回答
1

您永远不会修改iSubTotaliTotal在代码中。所以他们的价值观永远不会改变。

在循环中的某个地方,您可能想要修改值:

// ...
iSubTotal = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("The Total is now " + iSubTotal + iTotal);
iTotal += iNumber;
// ...

编辑:根据您在下面的评论,听起来您需要更稳健地处理输入。 Convert.ToInt32()如果字符串不能转换为整数,则会失败。您可以通过以下方式使其更加健壮:

if (int.TryParse(Console.ReadLine(), out iSubTotal))
{
    // Parsing to an integer succeeded, iSubTotal now contains the new value
}
else
{
    // Parsing to an integer failed, respond to the user
}
于 2013-11-12T15:51:43.420 回答
0

那是因为

 Console.WriteLine("The Total is now " + iSubTotal + iTotal);

是不正确的。如果将 2 个数字加在一起,则需要将答案存储在某处,而不是在使用 Console 时。写 + 符号用于连接不加。

于 2013-11-12T15:53:26.673 回答
0

您永远不会更改 iNumber 或 iTotal。我认为这样的事情更多的是你想要的。

while (iNumber >= 0)
    {
        iNumber = Convert.ToInt32(Console.ReadLine());
        iTotal += iNumber;
        Console.WriteLine("The Total is now " + iSubTotal + iTotal);
...
于 2013-11-12T15:54:02.263 回答
-2

iSubTotal + iTotal

应该

(iSubTotal + iTotal)

否则它被读取为一个字符串。

于 2013-11-12T15:51:33.490 回答