Сканер в цикле while

private int scanner = Convert.ToInt32(Console.ReadLine());
public void Play()
        {
            while (true)
            {
                if (scanner > theNumber)
                {
                    Console.WriteLine("your number is too big");
                } else 
                if (scanner < theNumber)
                {
                    Console.WriteLine("your number is too big");
                }  else
                {
                    Console.WriteLine("you got it");
                    break;
                }
            }
        }

это простая игра, в которой мне нужно перебрать одно и то же число через набор утверждений if. в Java они используют

int x;

x = scn.nextInt();

Что я могу использовать в С#? Сканер отсутствует.

С# эквивалентно функции scn.nextInt() в Java. в этом посте не объясняется, как сделать сканер на C#. Он только объясняет, как анализировать ввод пользователя, чтобы сделать его только целым числом.

🤔 А знаете ли вы, что...
Java обеспечивает безопасность с помощью механизма байт-код верификации.


208
1

Ответ:

Решено

Давайте извлечь метод (ReadInteger) для этого. Обратите внимание, что мы используем int.TryParse вместо Convert.ToInt32, поскольку ввод данных пользователем не требуется, а действительное целое число

 private static int ReadInteger(String title = null) 
 {
     if (!string.IsNullOrWhiteSpace(title))
         Console.WriteLine(title);

     while (true) 
     {
         if (int.TryParse(Console.ReadLine(), out int result))
             return result;

         Console.WriteLine("Sorry, the input is not a valid integer, try again");
      } 
 }

Тогда мы можем использовать его:

    public void Play()
    {
        while (true)
        {
            // We should re-read value after each attempt
            int value = ReadInteger();

            if (value > theNumber)
            {
                Console.WriteLine("your number is too big");
            } 
            else if (value < theNumber)
            {
                Console.WriteLine("your number is too big");
            }  
            else
            {
                Console.WriteLine("you got it");
                break;
            }
        }
    }