我正在嘗試在 do-while 回圈中使用 try-catch 陳述句。邏輯似乎有效,但 do 回圈不會一遍又一遍地回圈。如果它進入捕獲狀態,它似乎只是跳出 do 回圈。
private boolean madeChoice = false;
public void whatToDo(){
System.out.println("");
System.out.println("");
System.out.println("=====================================");
System.out.println("Welcome");
System.out.println("=====================================\n");
System.out.println("What would you like to do today? Your choices are: \n");
choices();
do{
try{
System.out.println("");
System.out.println("Please enter your choice");
int numberEntered = keyboard.nextInt();
if(numberEntered > 3 || numberEntered < 1){
System.out.println("-----------------------------------------------------------");
System.out.println("That is not a choice. Please choose from the following: \n");
choices();
numberEntered = keyboard.nextInt();
}else{
System.out.println("That is a good CHOICE");
madeChoice = true;
}
}catch (InputMismatchException e){
System.out.println("-----------------------------------------------------------");
System.out.println("This is not a number. Please choose from the following: \n");
choices();
}
}while(!madeChoice);
}
private void choices(){
System.out.println("1. Add a new set into your account");
System.out.println("2. See all the sets in your account");
System.out.println("3. Exit the Account Manger.");
}
uj5u.com熱心網友回復:
添加keyboard.nextLine()before continue,當發生例外時,需要“吃掉”輸入:
catch (InputMismatchException e){
System.out.println("-----------------------------------------------------------");
System.out.println("This is not a number. Please choose from the following: \n");
choices();
keyboard.nextLine();
continue;
// numberEntered = keyboard.nextInt();
}
編輯,我更改了您的一些代碼:
public void whatToDo(){
System.out.println("");
System.out.println("");
System.out.println("=====================================");
System.out.println("Welcome");
System.out.println("=====================================\n");
System.out.println("What would you like to do today? Your choices are: \n");
Scanner keyboard = new Scanner(System.in);
do{
try{
choices();
System.out.println("");
System.out.println("Please enter your choice");
int numberEntered = keyboard.nextInt();
if (numberEntered >= 1 && numberEntered <= 3) {
System.out.println("That is a good CHOICE");
madeChoice = true;
} else {
System.out.println("-----------------------------------------------------------");
System.out.println("That is not a choice. Please choose from the following: \n");
}
}catch (InputMismatchException e){
System.out.println("-----------------------------------------------------------");
System.out.println("This is not a number. Please choose from the following: \n");
keyboard.next();
// numberEntered = keyboard.nextInt();
}
}while(!madeChoice);
}
uj5u.com熱心網友回復:
也許您可以將代碼更新為這樣的內容,這似乎對我有用:
private boolean madeChoice = false;
private static boolean isMissMatchException = false ;
private static boolean isInvalidInput = false ;
public void whatToDo(){
if(Test.isMissMatchException)
{
System.out.println("-----------------------------------------------------------");
System.out.println("This is not a number. Please choose from the following: \n");
Test.isMissMatchException = false ;
} else if (Test.isInvalidInput)
{
System.out.println("-----------------------------------------------------------");
System.out.println("That is not a choice. Please choose from the following: \n");
Test.isInvalidInput = false ;
} else {
System.out.println("");
System.out.println("");
System.out.println("=====================================");
System.out.println("Welcome");
System.out.println("=====================================\n");
System.out.println("What would you like to do today? Your choices are: \n");
}
choices();
do{
try{
System.out.println("");
System.out.println("Please enter your choice");
@SuppressWarnings("resource")
int numberEntered = new Scanner(System.in).nextInt();
if(numberEntered > 3 || numberEntered < 1){
Test.isInvalidInput = true ;
this.whatToDo();
}else{
System.out.println("That is a good CHOICE");
madeChoice = true;
}
}catch (InputMismatchException e){
Test.isMissMatchException = true ;
this.whatToDo();
}
}while(madeChoice);
}
private void choices(){
System.out.println("1. Add a new set into your account");
System.out.println("2. See all the sets in your account");
System.out.println("3. Exit the Account Manger.");
}
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/361201.html
