#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. Это не мое дело-исправлять проблемы, выходящие за рамки вопроса. Если они столкнутся с ними, они могут спросить или поискать решение.