アルファベットやその他の記号なしで、80〜120の間の整数を入力したいと思っています。ここに私のコードです:ユーザが2つの数字の間の整数を入力するかどうかを確認するにはどうすればよいですか?
import java.util.*;
public class Test {
public static void main(String[] args)
{
Scanner in = new Scanner(System.in);
//checking for integer input
while (!in.hasNextInt())
{
System.out.println("Please enter integers between 80 and 120.");
in.nextInt();
int userInput = in.nextInt();
//checking if it's within desired range
while (userInput<80 || userInput>120)
{
System.out.println("Please enter integers between 80 and 120.");
in.nextInt();
}
}
}
}
しかし、私はエラーに直面しています。これには解決策がありますか?
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 Array.main(Array.java:15)
ありがとうございました! :)
EDITは:あなたはトムをありがとう、解決策を得たが、あなたのループ条件が間違っている
Scanner in = new Scanner(System.in);
int userInput;
do {
System.out.println("Please enter integers between 80 and 120.");
while (!in.hasNextInt())
{
System.out.println("That's not an integer!");
in.next();
}
userInput = in.nextInt();
} while (userInput<81 || userInput >121);
System.out.println("Thank you, you have entered: " + userInput);
}
}
確かにあります! 'java.util.InputMismatchException'を' catch 'し、適切に処理します。興味のないところで、なぜ入力をスキップしていますか? – Bathsheba
@Bathshebaこんにちは、私は学校の仕事を改訂しているのでキャッチを使わずにやりたいと思っています。これはちょうど最初のいくつかの話題です(この時点でキャッチ例外は学ばれていません) – Ken
while (in.hasNextInt()) – Unknown