Я делаю программу, которая просит вашего возраста, но она не работает. Сначала он спрашивает, сколько вам лет, с помощью модуля сканера и помещает ваш возраст в переменную. Я хочу, чтобы вывести в конце вашего возраста, но она нуждается в Int, так что если вы поставите строку или что-то другое, что дает ошибку:Как я могу заставить программу получить переменную внутри цикла? (java)
Exception in thread "main" java.util.InputMismatchException
at java.util.Scanner.throwFor(Unknown Source)
at java.util.Scanner.next(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at java.util.Scanner.nextInt(Unknown Source)
at org.asking.age.main(asking.java:18)
Я хочу, чтобы позволить ему сказать вместо ошибки): пожалуйста введите только число от 1 до 100, если вы введете что-то еще, а затем число от 1 до 100. И если вы ввели неправильный номер, он должен «перезагрузить», и если это хороший номер, он должен закончиться.
я попытался петлю:
(I = в возрасте от сканера)
while(i>100 || i>0)
{
if (a < 100 || a > 0) {
System.out.println("please only enter a number between 1 and 100");
System.out.println("how old are you?");
Scanner s = new Scanner(System.in);
int a = s.nextInt();
{
System.out.println("you are " + a + "years old")
}}}}}
, но в самом начале 'тогда' не могу достичь переменной. существует ли какой-либо другой способ?
Спасибо за помощь и извините за мой плохой английский :)
Спасибо @TheLostMind за помощь теперь я получил этот код:
, но я не понимаю, как использовать, если (> 0 & & < 100, и спички не работают
public static void main(String[] args) {
System.out.println("how old are you?");
Scanner h = new Scanner(System.in);
String a= h.nextLine();
String str = a;
String matches=("\\d+");
Integer.parseInt(a);
{
do {
System.out.println("please only enter a number between 1 and 100");
System.out.println("how old are you?");
h.nextLine();
} while(a>0 && a<100); }
}
}
Определите свой сканер вне цикла while –
Декаль как «Сканер», так и 'int a' вне цикла. – TheLostMind
Ваша проблема возникает из-за того, что вы читаете целое число со сканера и вводите не числовое значение. Мое предложение будет состоять в том, чтобы использовать строку, а затем проверить, является ли это допустимым числом или чем-то еще сообщать об ошибке или продолжить дальше, а небольшой комментарий стороны, 'i> 100 || i> 0' можно переписать как 'x> 0', – user902383