如何处理numberformatexception?

时间:2014-10-01 12:30:05

标签: input numberformatexception

我正在制作一个简单的猜谜游戏,它接受用户的输入。输入必须是小于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); 

2 个答案:

答案 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);