0

私は現在、ユーザーに 5 つの変数を入力させることを任されています。変数を使用して、変数を読み取って変数に割り当てる一連のループを作成する必要があります。Console.ReadLine();現在この設定を行っている1 つだけを使用する必要があります。

string userName = ""; 
int v1, v2, v3, v4, v5 = 0;  

int i = 1;

while (i <= 5)
{
    int InputCheck = 0;
    Console.WriteLine("Please input a number {0} between 10 and 50;", i);
    InputCheck = Convert.ToInt32(Console.ReadLine());

    if (InputCheck >= 10 && InputCheck <= 50) 
    {

        //if (i >= 10 && i <= 50)
            //i++;

        if (i == 1)
        {
            InputCheck = v1;
        }

        else if (i == 2)
        {
            InputCheck = v2;
        }

        else if (i == 3)
        {
            InputCheck = v3;
        }

        else if (i == 4)
        {
            InputCheck = v4;
        }

        else if (i == 5)
        {
            InputCheck = v5;
        }

        if (InputCheck < 10 || InputCheck > 50)
        {
            Console.WriteLine("The number you entered is either to high or to low please re-enter a number:");
        }
    }

割り当てられていない変数の使用というエラーが表示される理由について混乱しています。どんな助けでも大歓迎です。

4

4 に答える 4

1

変数を次のように宣言しました

 int v1, v2, v3, v4, v5 = 0;

これによりv5が初期化されますが、他のバージョンは初期化されません。エラーメッセージは実際にその手がかりを与えました。メッセージを読むことは、常に最初のデバッグツールです。

「v1は初期化されていません」というメッセージが表示されます。それで、あなたはそれをどこで初期化するかを見に行きます(またはあなたはまだです)。これがそのようなバグを見つける方法です。

実際、0を割り当てたと言ったときに、1つの宣言に複数の変数があるというこの問題があることを私は知っていました。このメッセージにより、コードを見なくても問題を見つけることができました。

于 2013-02-18T19:21:29.073 に答える
1

v1、v2、v3などを宣言することはありません。しかし、他の場所で宣言すると仮定すると、あなたが何をしようとしているのかを理解していれば、割り当ては逆になります。

たとえば、あなたが書いている場所

InputCheck = v1;

あなたはおそらくしたいです

v1 = InputCheck;

次に、v1、v2 などを調べて、値を使用して必要なことを行うことができます (これは、ユーザーが入力用に入力したものになります)。

わかりました...最近のコメントの後、v1-5を他の場所で初期化することを強調しましたが、上で述べたように、割り当てが逆になっていることが問題であると確信しています。理由を理解するのに助けが必要な場合は、尋ねてください。

于 2013-02-18T19:16:51.880 に答える
0

List数値を保持するためにa を使用することを検討してください

var numbersList = new List<int>();

while(numbersList.Count <= 5)
{
    int input = Convert.ToInt32(Console.ReadLine());
    if(input >= 10 && input <= 50)
    {
        numbersList.Add(input);
        continue;
    }

    Console.WriteLine("The number you entered is either to high or to low please re-enter a number:");
}
于 2013-02-18T19:19:40.000 に答える
0

変数 v1,v2,v3,v4,v5 を初期化していますか? 変数を初期化していないことを考慮してください。割り当てられていない変数を他のローカル変数に割り当てることはできないため、変数 v1,v2,v3,v4,v5 = 0 を宣言する問題は解決されます。前述のように、ジェネリック リストの使用が推奨されます。

于 2013-02-18T19:32:10.420 に答える