1

以下は私のコードです

namespace ProgrammingTesting
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("GUESS THE ANSWER");
            Console.WriteLine("Please enter the input");

            int input1 = (int.Parse(Console.ReadLine()));
            while (input1 != 4)
            {
                Console.WriteLine("Try agian");
            }
            if (input1 == 4)
            {
                Console.WriteLine("You are a winner");
                Console.ReadLine();
            }
            else if (input1 < 4)
            {
                Console.WriteLine("TOOOOO low");
                Console.ReadLine();
            }
            else if (input1 > 4)
            {
                Console.WriteLine("TOOOO high");
                Console.ReadLine();          
            }
        }
    }
}

ここに while 条件を入れていますが、まだ続行できません。無限ループになっています

ここでは、ユーザーが 4 以外の数字を入力した場合、それが開始され、ユーザーが再度数字を入力する必要があるという条件を適用したいと考えています。コンソールアプリを閉じることが起こっています。while トイレの入れ方

4

7 に答える 7

2

input1ループが始まる前に値を変更しているだけです。二度と変更しないため、永遠にループし続けます。

編集:ループに対して次のことを検討することをお勧めします。

int input1 = 0;
while (input1 != 4)
      {
        input1 = (int.Parse(Console.ReadLine()));

        if (input1 == 4)
        {
            Console.WriteLine("You are a winner");
        }
        else if (input1 < 4)
        {
            Console.WriteLine("TOOOOO low");
          Console.WriteLine("Try agian");

        }
        else if (input1 > 4)
        {
            Console.WriteLine("TOOOO high");
          Console.WriteLine("Try agian");

        }    
}
于 2013-03-07T14:25:11.850 に答える
2

追加

input1 = (int.Parse(Console.ReadLine()));

while ループの最後に、または input1 が変更されることはありません。

しかし、それだけでは十分ではありません。

あなたはすべきです(うまくいきませんが、うまくいきます)

static void Main(string[] args)
{
    Console.WriteLine("GUESS THE ANSWER");


    int answer;
    var success = false;
    Console.WriteLine("Please enter the input");
    while (!success) {

       var userInput = Console.ReadLine();

       if (!Int32.TryParse(userInput, out answer))
          Console.WriteLine("You must enter an integer");

       else {
          if (answer < 4)
             Console.WriteLine("Too low");

          else if (answer > 4)
             Console.WriteLine("Too high");

          else {
             Console.WriteLine("Grats !");
             success = true;
          }
        }
      if (!success)
         Console.WriteLine("Try again !");
     }
}
于 2013-03-07T14:25:49.380 に答える
0

インデントを修正しました。whileブロックにはConsole.WriteLineのみが含まれ、入力チェックは含まれていないため、input1は変更されず、ループは無限になります。

Console.WriteLineの下の}を削除して最後に配置すると、4を入力してループを停止できます。

于 2013-03-07T14:44:55.307 に答える
0

ええと、input1ループ内のどこにも変更はありません。なので当然ループは一度入ると毎回入ってしまいます。

于 2013-03-07T14:25:21.907 に答える
0
  while (input1 != 4)
  {
      Console.WriteLine("Try agian");

  }

上記のコードでは、input1never の値が変化しないため、永久にループします。

于 2013-03-07T14:25:51.720 に答える
0

コードを変更しました。確認してください

     namespace ProgrammingTesting
{
class Program
{
    static void Main(string[] args)
    {
        Console.WriteLine("GUESS THE ANSWER");
        Console.WriteLine("Please enter the input");
        int input1 = 0;
        while (input1 != 4)
        {
            input1 = (int.Parse(Console.ReadLine()));


            if (input1 == 4)
            {
                Console.WriteLine("You are a winner");
                Console.ReadLine();
            }
            else if (input1 < 4)
            {
                Console.WriteLine("TOOOOO low");


            }
            else if (input1 > 4)
            {
                Console.WriteLine("TOOOO high");

            }
        }
    }
}

}

Console.Readline() を削除して、ダブルタイムを入力する必要がないようにします

于 2013-03-07T15:47:46.273 に答える
-1

}while ループを閉じているのすぐ上に余分なif (input1 == 4)部分があるため、内部にコードがないため、while ループは終了しません。その中かっこを の下に移動しますif else

于 2013-03-07T14:26:26.093 に答える