簡體   English   中英

處理多個菜單輸入Java-返回main中的while循環?

[英]Handling multiple menu inputs java - returning to while loop in main?

我正在嘗試設計一個具有菜單的程序,並且該程序在整個過程中都會處理該菜單的輸入。 我有另一個菜單,該菜單可能會被另一個類調用,這可能會中斷該程序的流程並調用另一個方法,該方法將顯示另一個菜單。 當從另一個類調用顯示菜單時,是否有辦法將此控件傳遞回main內部的while循環以繼續處理輸入,還是完全不同地編寫此控件更明智?

該代碼僅是當前結構的一個示例。 目前,我已經嘗試在其他類想要調用displayNewMenu時設置一個標志,並在while循環中檢查該標志,然后從那里調用它,但這似乎不起作用。

public static void main(String[] args) {
    displayMenu();
    while(true) {
        handleMenuInput();
}

public void displayNewMenu() {
}

好吧,如果您希望一直可以訪問此MENU,則必須做一些多線程處理。 否則,您將無法做其他工作並且仍然能夠接受用戶輸入。

創建線程來處理用戶交互,這將包括掃描器,該掃描器獲取用戶輸入,將輸出放入控制台,並為您的工作生成線程。

您不能在單線程環境中執行此操作。您將使程序掛起。

如果您想返回以處理用戶輸入/更改菜單等,則需要稍微更改一下流程

       public void work1(){
         //some work
       }
      work2,3,4()...

       public void menuSelector(){
           //get input
           if(input=menu1){
             menu1();
           } ....

       }

     public void menu1(){
           displayMenu1();
           while(true){
           //get input
            if(input=work1){
               work1();
             }
            if(input=exitmenu){
               break;
           }
           }
          menuSelector();
        }

   public void menu2(){
           displayMenu2();
           while(true){
           //get input
            if(input=work2){
               work2();
             }
            if(input=exitmenu){
               break;
           }
           }
          menuSelector();
        }

我想你明白了,這將允許您在菜單之間進行跳轉,並在菜單內循環。當然,odnt只需使用多個if語句,在此處進行切換即可。

如果您不希望使用多線程解決方案,請考慮以下方法:

main(){
    while(true){ // Infinite loop to ensure that the control always comes back to display the menu. Exits only when the user selects an option to quit.
        displayMenu();
        handleUserInput();
    }
}

displayMenu(){
    // Show menu options here:
    // Press 1 to perform task 1.
    // Press 2 to perform task 2.
    // Press 3 to exit.
}

handleUserInput(opt){
    if opt == 1, perform task 1
    else if opt == 2, perform task 2
    else if opt == 3, exit
    else show error "invalid input"
}

performtask1(){
    while(true){
        displayTask1Menu();
        handleTask1UserInput();
    }
}

displayTask1Menu(){
    // Show menu options here:
    // Press 1 to perform sub task 1.
    // Press 2 to perform sub task 2.
    // Press 3 to exit to main menu.
}

handleTask1UserInput(){
    if opt == 1, perform sub task 1
    else if opt == 2, perform sub task 2
    else if opt == 3, exit to main menu / break;
    else show error "invalid input"
}

這樣,在子菜單中執行每個操作后,將提示用戶返回菜單。

您還可以根據用戶輸入更改菜單顯示。

暫無
暫無

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

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