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

You are not assigning the additionto a variable here "iSubTotal + iTotal"

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

Instead of these two lines

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

iSubTotalコードを変更したりiTotal、コードを変更したりすることはありません。したがって、彼らの価値観は決して変わりません。

ループのどこかで、値を変更したいと思うでしょう:

// ...
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

thats because

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

is incorrect. If you are adding 2 numbers together, you need to store the answer somewhere, you are not when using Console.Write the + symbol is used to concatenate not add.

于 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 に答える