Я здесь впервые. Я начинаю учиться кодировать, поэтому я искренне надеюсь, что этот вопрос, который у меня есть, не то, что я могу найти здесь! (обещаю, что искал некоторое время, но так как я нуб в этой теме, я не нашел ничего понятного для меня, чтобы разрешить мое сомнение).
Я делаю простую игру на JAVA, в которой программа генерирует случайное число, и игрок должен угадать сгенерированное число. Когда игрок вводит число, игра отображает подсказку о том, больше оно или меньше числа, сгенерированного случайным образом.
Сама программа работает нормально, если вы вводите только числа, но я хочу добавить оператор try-catch для обработки неверного пользовательского ввода.
Я попытался использовать оператор, как показано в моем коде, но я не могу понять, почему он не работает должным образом, потому что, когда я ввожу что-то отличное от числа, исключение перехватывается, и оно печатает на консоли System.out.println( ), но программа завершается, когда это происходит.
Я хотел бы попытаться поймать, чтобы получить исключение ввода не числа без завершения программы каждый раз, когда исключение перехватывается. Как я могу это исправить?
Большое спасибо за твою помощь!
import java.util.Scanner;
public class HiLo {
public static void main(String[] args) {
Scanner scan = new Scanner(System.in); //Creates Scanner object to read from keyboard
String playAgain = ""; //if == y, game restarts
try {
do {
// Create a random number for the user to guess
int theNumber = (int)(Math.random() * 100 + 1);
//System.out.println(theNumber); //Uncoment this in case we want to know the number (for testing).
int guess = 0; //Number entered by the player
int count = 0; //Number of tries of guessing the number
while(guess != theNumber){
System.out.println("Guess a number between 1 and 100:");
guess = scan.nextInt(); //Reads the number typed on the keyboard by the player
count++; //Plus 1 every time a number is entered
System.out.println("You entered " + guess +".");
if(guess < theNumber) { //If number entered is smaller
System.out.println("The number is bigger" + ", try again!");
System.out.println("Number of tries: " + count);
} else if(guess > theNumber) { //If number entered is bigger
System.out.println("The number is smaller" + ", try again!");
System.out.println("Number of tries: " + count);
} else { //If both previous cases are false
System.out.println("Congratulations! You've found the number!");
}
}
//Once guess == theNumber
System.out.println("Number of tries: " + count);
System.out.println("Play again? (y/n)");
playAgain = scan.next(); //Reads the String entered from keyboard by the player
}
while(playAgain.equalsIgnoreCase("y")); //If player enters y, start again.
//Otherwise
System.out.println("Thank you for playing! Goodbye :)");
} catch (Exception e) {
System.out.println("Incorrect entering! Please enter a number between 1 and 100.");
}
scan.close(); //Close scanner
} //Close main
} //Close class
catch
вы закрываете сканер и возвращаетесь из основного, так чего вы ожидали? - person tkausl   schedule 01.12.2017