Я здесь совершенно в тупике, и после многих часов возни я просто не могу заставить его работать:
Функция ниже в основном представляет собой меню. Он попросит вас ввести 1, 2 или 3 и вернуть это int.
Если вы введете что-либо, кроме int, он поймает его и снова запустит меню. Если вы введете int, отличный от 1-2-3, он сообщит вам и снова запустит меню.
Проблема в том, что если вы сделаете неверный ввод, он скажет вам правильные вещи, перезапустит меню , но затем, если вы сделаете ПРАВИЛЬНЫЙ ввод, он вернет недопустимое значение, которое вы пробовали раньше, вместо нового, хорошего.
Я следил за ним построчно, и он попадет в возврат из моего if , а затем нажмите return в конце try-catch, и "choixDeMenu" вернется к старому недопустимому значению и вернет его. Если вас уведомили, что это не int, он вернет 0, но если это недопустимый int, он вернет это недопустимое int.
Если вы сразу сделаете ввод VALID, функция будет работать и возвращает ваш действительный ввод. У меня возникают проблемы только тогда, когда вы сначала пробуете недопустимые вещи.
public static int menu()
{
int choixDeMenu = 0;
System.out.println ("Sélectionner le fichier à importer :");
System.out.println ("1. Partie 1.");
System.out.println ("2. Partie 2.");
System.out.println ("3. Partie 3.");
Scanner waitingForChoice = new Scanner(System.in);
try
{
choixDeMenu = waitingForChoice.nextInt();
if (choixDeMenu < 4 && choixDeMenu > 0)
{
waitingForChoice.close();
return choixDeMenu;
}
else
{
System.out.println("Entrée invalide. Entrer 1, 2, ou 3.");
menu();
}
}
catch (InputMismatchException e)
{
System.out.println("Doit être un chiffre. Entrer 1, 2, ou 3.");
menu();
}
catch (Exception e)
{
e.printStackTrace();
}
return choixDeMenu;
}