我正在尝试创建一组代码,使您可以用计算机猜数字。问题部分和调试控制台部分都很清楚,我能够运行它,直到尝试通过集成终端输入值。
我已经将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)
答案 0 :(得分:1)
为什么要尝试从String中获取一个int值,以告诉您猜测太低?可以将其视为一个字符串,然后可以将字符串与.equals进行比较,以查看字符串的值是否相同。如果是,则告诉程序它太低或太高。
答案 1 :(得分:1)
您正在将int与String进行比较,这就是您收到错误的原因。您应该做的是将用户输入与过高或过高的工具进行比较,并根据用户输入执行if / else的过低或过高部分
答案 2 :(得分:1)
根据您的源代码,java无法将单词“ TooLow”转换为整数。如果您想比较整数总是输入的数字,它仍然对您的目标有偏见,因此代码int h1 = Integer.parseInt(TooHigh);会完美地工作。