我正在制作一个简单的猜谜游戏,它接受用户的输入。输入必须是小于6的数字来猜测随机数。如果用户输入更大的数字,我已经处理了这种情况:
if(num > 5) {
System.out.println("The number is too high. You spoiled one turn. Your saldo is now " + cash +".");
guessAgain();
}
但是由于用户输入的内容不是数字,我想我可以用这段代码处理它:
if(num != 1 && num != 2 && num != 3 && num != 4 && num != 5) {
System.out.println("Invalid input");
guessAgain();
}
但这不起作用,并为我提供输入字符串的numberformatexception。你能帮帮我吗?提前致谢
这是之前的代码:
System.out.print("Guess : ");
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String gok = null;
try {
gok = br.readLine();
} catch (IOException ioe) {
System.out.println("IO error");
System.exit(1);
}
int num = Integer.parseInt(gok);
答案 0 :(得分:0)
如果您使用try catch,则可以使用该异常来确定它是否是填充的数字。(在try中您可以将转换为int)。大多数情况下,如果它不是一个被填充的数字,那么将会出现转换异常。
编辑:
尝试
{
Integer.valueOf([此处为您的输入]);
}
catch(NumberFormatException e)
{
System.out.println(“您的输入不是数字”);
}
答案 1 :(得分:0)
将num转换为Integer并捕获numberFormatException(我只需要你的代码并添加catch nfe):
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String num = null;
try
{
num = br.readLine();
Integer.valueOf(num);
} catch (IOException ioe)
{
System.out.println("IO error");
System.exit(1);
} catch (NumberFormatException nfe)
{
System.out.println("Invalid input");
}
System.out.println(num);