Как я могу решить java.lang.NumberFormatException: для входной строки: "TooLow" - PullRequest
0 голосов
/ 14 октября 2019

Я пытаюсь создать набор кода, который позволит вам угадать число с компьютером. Раздел проблем и консоль отладки понятны, и я мог запускать его, пока не попытался ввести значения через интегрированный терминал.

Я преобразовал возвращаемое строковое значение из Input.nextLine () в значение int, хотя, похоже, это не имело никакого эффекта, я также переключился с запуска кода на интегрированном терминале вместо консоли отладки. Кроме того, я пробовал оператор catch (NumberFormatException), но он не удался, так как код Visual Studio не может идентифицировать ни 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 ]

1 голос
/ 14 октября 2019

Вы сравниваете int со строкой, поэтому вы получаете ошибку. Что вы должны сделать, это сравнить пользовательский ввод со слишком высоким или набором инструментов и выполнить слишком низкую или слишком высокую часть вашего if / else в зависимости от пользовательского ввода

1 голос
/ 14 октября 2019

Исходя из вашего исходного кода, Java не может преобразовать слово "TooLow" в целое число. это по-прежнему предвзято относительно вашей цели, если вы хотите сравнить целое число всегда с введенным числом, поэтому код int h1 = Integer.parseInt (TooHigh);будет работать отлично.

1 голос
/ 14 октября 2019

Почему вы пытаетесь получить int от String, который говорит, что догадка была слишком низкой? Это можно просто рассматривать как строку, а затем вы можете сравнить строки с .equals, чтобы увидеть, совпадают ли значения строк. Если это так, вы говорите программе, что она слишком низкая или слишком высокая.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...