如何解决java.lang.NumberFormatException:对于输入字符串:“ TooLow”

时间:2019-10-14 03:47:51

标签: java visual-studio-code

我正在尝试创建一组代码,使您可以用计算机猜数字。问题部分和调试控制台部分都很清楚,我能够运行它,直到尝试通过集成终端输入值。

我已经将Input.nextLine()返回的字符串值转换为int值,尽管这似乎没有效果,我也从在集成终端而不是调试控制台上运行代码切换。另外,我尝试了catch(NumberFormatException)语句,但由于Visual Studio Code无法识别catch或NumberFormatException而失败。

while ( win == false)
     {
int CorrectNumber = 70;
int g = (int)( Math.random() * 101 );
System.out.print( "The Number I Guess Is:" + g);

String TooHigh = "TooHigh";
//type TooHigh if the number computer guessed is too high 

TooHigh = input.nextLine();
int h1 = Integer.parseInt(TooHigh);

String TooLow = "TooLow";
//type TooLow if the number computer guessed is too low

TooLow = input.nextLine();
int l1 = Integer.parseInt(TooLow);

if ( g == h1 ) //too high
{
    int y = (int)( Math.random() * ( g - 70 ) );
    System.out.print( "Another Number I Guessed is: " + y );
}
else if ( g == l1 ) //too low
{
    int z = (int)( Math.random() * ( 70 - g ) );
    System.out.print( "Another Number I Guessed is: " + z );
}
else if ( g == 70 ) //computer wins
{
    win = true;
}

当我输入单词告诉计算机时,它猜出的数字是否太大或太小,我希望它能给我另一个数字。但是,相反,我收到以下消息:

    Exception in thread "main" java.lang.NumberFormatException: For input string: "TooLow" 
at java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:65)
            at java.base/java.lang.Integer.parseInt(Integer.java:652)
            at java.base/java.lang.Integer.parseInt(Integer.java:770)
            at RevGuess.main(RevGuess.java:23)

3 个答案:

答案 0 :(得分:1)

为什么要尝试从String中获取一个int值,以告诉您猜测太低?可以将其视为一个字符串,然后可以将字符串与.equals进行比较,以查看字符串的值是否相同。如果是,则告诉程序它太低或太高。

答案 1 :(得分:1)

您正在将int与String进行比较,这就是您收到错误的原因。您应该做的是将用户输入与过高或过高的工具进行比较,并根据用户输入执行if / else的过低或过高部分

答案 2 :(得分:1)

根据您的源代码,java无法将单词“ TooLow”转换为整数。如果您想比较整数总是输入的数字,它仍然对您的目标有偏见,因此代码int h1 = Integer.parseInt(TooHigh);会完美地工作。