Как проверить, как часто кто-то вводил данные в консоль.Строка чтения()

#c#

Вопрос:

Я имею в виду под этим вопросом, как мне проверить, как часто кто-то вводил данные в: Преобразование.ToInt32(Консоль.Строка чтения());

Я новичок, так что не удивляйтесь (если это возможно, глупый вопрос 🙂 Я уже пробовал что-то подобное: Thx за помощью! 🙂

 int test1 = 0; int input = Convert.ToInt32(Console.ReadLine()); if (input lt; test1) // I don't know how i can let check the computer, how many inputs the   user already did  {  // ACTION  }  

Комментарии:

1. Существует конкретная причина, по которой вы хотите выполнить преобразование в Int32?

Ответ №1:

Еще одним подходом будет создание другого метода, который будет инкапсулировать и добавлять функциональность для сохранения и увеличения счетчика. Поэтому, даже если вы звоните Console.ReadLine() извне, это увеличивает счетчик внутри public YourMethodName() .

 public YourMethodName() {  var inputCount = 0;  var test1 = 5;    while (inputCount lt; test1)  {  _consoleReadLine(ref inputCount);  //ACTION   //Notice that inputCount must increase to dont create an infinite loop  } }  private string _consoleReadLine(ref int counter) {  counter  ;  return Convert.ToInt32(Console.ReadLine()); }  

Примечание: Convert.ToInt32(Console.ReadLine()); выдает System.FormatException , когда не вставлены цифровые символы.

while цикл будет недоступен, потому inputCount что никогда не будет ниже, чем test1 в этом примере, отрегулируйте переменные.

Если это не решит вашу проблему, пожалуйста, детализируйте вопрос более подробно с дополнительной информацией, чтобы помочь нам дать вам лучший ответ.

Редактировать

Если вы хотите сделать это для более высокой игры, это может быть то, что вам нужно. Я делюсь обоими способами с массивом и списком.

Массив

 var inputLimit = 5;  var inputs = new int[inputLimit];   for(var i = 0; i lt; inputLimit; i  )  {  var input = Convert.ToInt32(Console.ReadLine());  inputs.SetValue(input, i);  }    // inputs array have all values introduced by user  // LOGIC CODE  

Список

 var inputLimit = 5;  var inputs = new Listlt;intgt;();   for(var i = 0; i lt; inputLimit; i  )  {  var input = Convert.ToInt32(Console.ReadLine());  inputs.Add(input);  }    // inputs array have all values  // LOGIC CODE  

Запрашивает дополнительные разъяснения, если это необходимо, и отмечает как ответ, если это решает эту проблему.

Комментарии:

1. я пытаюсь закодировать игру с более низким уровнем, и я хочу это сделать, если кто-то дает более (например) 5 входов, программа не принимает никаких других попыток (я думаю, что она способна с возвратом)

2. @s0lid Настройка var test1 = 5; и вызов _consoleReadLine внутри, в то время как один раз пользователь уйдет, остановив вызов _consoleReadLine метода. Я отредактирую свой ответ.

Ответ №2:

Вы можете просто использовать другую переменную, чтобы отслеживать это. Например:

 var inputCount = 0; var test1 = 0; while(inputCount lt; test1) {  var input = Convert.ToInt32(Console.ReadLine());  inputCount  ; }  

Это будет увеличиваться inputCount на 1 каждый раз, когда они вводят что-то в консоль.

Комментарии:

1. Есть две ошибки, если значение test1 ниже значения inputCount, вы никогда не достигнете консоли. ReadLine(), поэтому в этом случае нет возможности проверить. Второй — это тот, кто обращается. ToInt32(Консоль. ReadLine()) дает систему. Исключение формата.

2. Я в курсе. Операция, очевидно, новичок в программировании. Я просто отвечаю на вопрос

3. Весь код здесь я скопировал из поста ОП, за исключением цикла while (потому что это где-то не работает без цикла) и inputCount потому что, ну, это ответ на их вопрос.

4. Я согласен, что ваша логика в порядке, и отвечу на вопрос, но он может столкнуться с другими проблемами, пытаясь ответить на ваш вопрос, так как вы ему не советовали.

5. Это не мое дело-исправлять проблемы, выходящие за рамки вопроса. Если они столкнутся с ними, они могут спросить или поискать решение.