簡體   English   中英

Switch語句未退出循環。 (Java)

[英]Switch Statement not exiting loop. (Java)

我有一個簡單的菜單系統,用戶點擊8即可離開。 但是由於某種原因,當我在測試過程中達到8時,它就像沒有任何反應一樣,回到了循環的頂部。

package potluck;
import java.util.*;

import potluck.*;

public class Controller {
private Scanner input;


private final static int USER_LOGIN = 0;
private final static int CREATE_MEMBER = 1;
private final static int CREATE_ADMIN = 2;
private final static int CREATE_RECIPE = 3;
private final static int COMMENT = 4;
private final static int DELETE_RECIPE = 5;
private final static int EXIT = 8;

public Controller(){
    input = new Scanner(System.in);
    startUp();//no better name to be thought of
}

public void startUp() {
    // TODO Auto-generated method stub
    int choice;
    do {
        this.displayMenu();
        choice = input.nextInt();
        input.nextLine();// clears carriage return

        //depending on choice takes to a different menu
        switch (choice) {

        case CREATE_MEMBER: 
            Member member = new Member();
            break;
//     case CREATE_ADMIN: 
//      member.addAdmin();
//              break;
        case CREATE_RECIPE:
            Recipe.addRecipe();
            break;
        case COMMENT:
            Recipe.addComment();
            break;
        case DELETE_RECIPE:
            Recipe.deleteRecipe();
            break;
        case EXIT:
            System.out.println("Thanks for using our software");
            break;
        default:
            System.out.println("Error, Invalid selection.");
        }
    } while (choice != 8); //choice 8 exits
}
private void displayMenu() {
    System.out.println("1 Create Member");
    System.out.println("2 Create Admin Member");
    System.out.println("3 Create Recipe");
    System.out.println("4 Leave Comment");
    System.out.println("5 Delete Recipe");
    System.out.println("8 Exit");
    System.out.println("Please enter menu option, to exit enter 8");
    }
}

在測試中,它聲稱選擇為8,這應該會打破一會兒……但不會……

更新:復制代碼時,我被告知不要使用某些工作。 我在選擇項8下有system.exit,但被告知那是錯誤的代碼

不好意思 我是個白痴。 在啟動它的主要位置,我實例化了一個新的控制器(您正在查看的類),該控制器在構造函數中啟動菜單。 然后我調用了startup()方法。 這意味着它運行良好,因為我很笨,它只運行了兩次。

public static void main(String[] args) {
    // TODO Auto-generated method stub
    Controller cntlr = new Controller();    
    cntlr.startUp();
}


public Controller(){
    input = new Scanner(System.in);
    startUp();//no better name to be thought of
}

public void startUp() {
    // TODO Auto-generated method stub
    int choice;
    do {
        this.displayMenu();
        choice = input.nextInt();
        input.nextLine();// clears carriage return

        //depending on choice takes to a different menu
        switch (choice) {

        case CREATE_MEMBER: 
            Member member = new Member();
            break;
        case CREATE_ADMIN: 
            member.addAdmin();
            break;
        case CREATE_RECIPE:
            Recipe.addRecipe();
            break;
        case COMMENT:
            Recipe.addComment();
            break;
        case DELETE_RECIPE:
            Recipe.deleteRecipe();
            break;
        case EXIT:
            System.out.println("Thanks for using our software");

            break;
        default:
            System.out.println("Error, Invalid selection.");
        }
    } while (choice != 8); //choice 8 exits
}
private void displayMenu() {
    System.out.println("1 Create Member");
    System.out.println("2 Create Admin Member");
    System.out.println("3 Create Recipe");
    System.out.println("4 Leave Comment");
    System.out.println("5 Delete Recipe");
    System.out.println("8 Exit");
    System.out.println("Please enter menu option, to exit enter 8");
    }
}

TL; DR。 我很傻,構造函數是我應該更多注意的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM