2016-01-21 76 views
-2

我對Java很陌生,但熟悉一些其他編程語言,我知道它的基本佈局。我正在努力的一件事是循環菜單,特別是主菜單。如何在使用案例後創建Java主菜單循環

我不知疲倦地研究它的方法,但似乎沒有應用或工作到我的程序。我假設我的東西在我的更基本的程序中失去了一些愚蠢和小小的東西。

檢查下面,感謝您的任何提示。

import java.util.Scanner; 
public class basicCalc { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     Scanner input = new Scanner(System.in); 
     boolean mainLoop = true; 

     int choice; 
     do{ 
      System.out.println("Calculator Main Menu\n"); 
      System.out.print("1.) Addition \n"); 
      System.out.print("2.) Subtraction.\n"); 
      System.out.print("3.) Multiplication.\n"); 
      System.out.print("4.) Division.\n"); 
      System.out.print("5.) Generate Random Number.\n"); 
      System.out.print("6.) Exit\n"); 
      System.out.print("\nEnter Your Menu Choice: "); 

      choice = input.nextInt(); 


     } 

     while(choice >7); 

     switch(choice){ 

     case 1: 
      //Definitions 
      int adNumf, adNuml, sum; 
      System.out.print("Please Enter The First Number: "); 
      adNumf = input.nextInt(); 
      System.out.print("\nPlease Enter The Second Number: "); 
      adNuml = input.nextInt(); 
      sum = adNumf + adNuml; 
      System.out.print("The Sum Of Those Numbers is: " +sum); 
      break; 

     case 2: 
      int subNum1, subNum2, sum2; 
      System.out.println("\nPlease Enter The First Number: "); 
      subNum1 = input.nextInt(); 
      System.out.println("Please Enter The Second Number: "); 
      subNum2 = input.nextInt(); 
      sum2 = subNum1 - subNum2; 
      System.out.println("The Subtraction Leaves The Number: " +sum2); 
      break; 

     case 3: 
      int multNum1, multNum2, multTotal; 

      // Gather Input 
      System.out.println("Please Enter The First Number To Multiply: "); 
      multNum1 = input.nextInt(); 
      System.out.println("Please Enter The Second Number To Multiply: "); 
      multNum2 = input.nextInt(); 

      // This will Multiply the Numbers 
      multTotal = multNum1 * multNum2; 

      //Display Final 
      System.out.println("The Multiplied Numbers Are: " +multTotal); 
      break; 

     case 4: 
      //Definitions 
      double divNum1, divNum2, divTotal; 
      System.out.println("Enter Your Numerator "); 
      divNum1 = input.nextInt(); 
      System.out.println("Enter Your Denominator "); 
      divNum2 = input.nextInt(); 
      if(divNum2 == 0){ 
       System.out.println("Zero is Not divisable, please select a new denominator: "); 
       divNum2 = input.nextInt(); 
      } 
      divTotal = divNum1/divNum2; 
      System.out.println("Your divisor is: " +divTotal); 
      break; 

     case 5: 
      double limL, limH, rand; 
      System.out.println("Enter Your Low Limit: "); 
      limL = input.nextInt(); 
      System.out.println("Enter Your High Limit "); 
      limH = input.nextInt(); 

      //Equation to keep numbers within bounds 
      rand = limL + (Math.random() * ((limH - limL) + 1)); 
      System.out.println("Given Your Limits, the Random Number will be: " +rand); 
      break; 

     case 6: 
      System.out.println("Exiting Program..."); 
      System.exit(0); 
      break; 
     } 



     // Bad Menu Option Direct 
    if (choice > 6 || choice < 1){ 
     System.out.println("This is not a valid Menu Option! Please Select Another."); 
     do{ 
      choice = input.nextInt(); 
     } 
     while(choice < 7); 
    } 
    // End bad menu option 


    } 

} 

回答

1

您可以在while循環中得到(從菜單顯示)整個代碼,並給條件爲真,這樣(因爲你是用6到EXIT),使用它會自動重複的情況後。如果任何無效的輸入,給出瞭如:10的情況下會默認節,並且將執行的代碼有

import java.util.Scanner; 
public class basicCalc { 

public static void main(String[] args) { 
    // TODO Auto-generated method stub 

    Scanner input = new Scanner(System.in); 
    boolean mainLoop = true; 

    int choice; 
    while(true){ 
     System.out.println("Calculator Main Menu\n"); 
     System.out.print("1.) Addition \n"); 
     System.out.print("2.) Subtraction.\n"); 
     System.out.print("3.) Multiplication.\n"); 
     System.out.print("4.) Division.\n"); 
     System.out.print("5.) Generate Random Number.\n"); 
     System.out.print("6.) Exit\n"); 
     System.out.print("\nEnter Your Menu Choice: "); 

     choice = input.nextInt(); 




    switch(choice){ 

    case 1: 
     //Definitions 
     int adNumf, adNuml, sum; 
     System.out.print("Please Enter The First Number: "); 
     adNumf = input.nextInt(); 
     System.out.print("\nPlease Enter The Second Number: "); 
     adNuml = input.nextInt(); 
     sum = adNumf + adNuml; 
     System.out.print("The Sum Of Those Numbers is: " +sum); 
     break; 

    case 2: 
     int subNum1, subNum2, sum2; 
     System.out.println("\nPlease Enter The First Number: "); 
     subNum1 = input.nextInt(); 
     System.out.println("Please Enter The Second Number: "); 
     subNum2 = input.nextInt(); 
     sum2 = subNum1 - subNum2; 
     System.out.println("The Subtraction Leaves The Number: " +sum2); 
     break; 

    case 3: 
     int multNum1, multNum2, multTotal; 

     // Gather Input 
     System.out.println("Please Enter The First Number To Multiply: "); 
     multNum1 = input.nextInt(); 
     System.out.println("Please Enter The Second Number To Multiply: "); 
     multNum2 = input.nextInt(); 

     // This will Multiply the Numbers 
     multTotal = multNum1 * multNum2; 

     //Display Final 
     System.out.println("The Multiplied Numbers Are: " +multTotal); 
     break; 

    case 4: 
     //Definitions 
     double divNum1, divNum2, divTotal; 
     System.out.println("Enter Your Numerator "); 
     divNum1 = input.nextInt(); 
     System.out.println("Enter Your Denominator "); 
     divNum2 = input.nextInt(); 
     if(divNum2 == 0){ 
      System.out.println("Zero is Not divisable, please select a new denominator: "); 
      divNum2 = input.nextInt(); 
     } 
     divTotal = divNum1/divNum2; 
     System.out.println("Your divisor is: " +divTotal); 
     break; 

    case 5: 
     double limL, limH, rand; 
     System.out.println("Enter Your Low Limit: "); 
     limL = input.nextInt(); 
     System.out.println("Enter Your High Limit "); 
     limH = input.nextInt(); 

     //Equation to keep numbers within bounds 
     rand = limL + (Math.random() * ((limH - limL) + 1)); 
     System.out.println("Given Your Limits, the Random Number will be: " +rand); 
     break; 

    case 6: 
     System.out.println("Exiting Program..."); 
     System.exit(0); 
     break; 
    default : 
      System.out.println("This is not a valid Menu Option! Please Select Another"); 
      break; 

    } 


    } 




    } 

    } 
+0

請說明您的答案。 – JFPicard

+0

看起來很漂亮,但你可以留下一些評論? –

2

,或者嘗試thisone

import java.util.Scanner; 
public class basicCalc { 

    public static void main(String[] args) { 
     // TODO Auto-generated method stub 

     Scanner input = new Scanner(System.in); 
     boolean mainLoop = true; 

     int choice; 
     do{ 
      System.out.println("Calculator Main Menu\n"); 
      System.out.print("1.) Addition \n"); 
      System.out.print("2.) Subtraction.\n"); 
      System.out.print("3.) Multiplication.\n"); 
      System.out.print("4.) Division.\n"); 
      System.out.print("5.) Generate Random Number.\n"); 
      System.out.print("6.) Exit\n"); 
      System.out.print("\nEnter Your Menu Choice: "); 
      choice = input.nextInt(); 




     switch(choice){ 

     case 1: 
      //do something 
      break; 

     case 2: 
      //do something 
      break; 

     case 3: 
      //do something 
      break; 

     case 4: 
      //do something 
      break; 

     case 5: 
      //do something 
      break; 

     case 6: 
      System.out.println("Exiting Program..."); 
      System.exit(0); 
      break; 
     default: 
     System.out.println(choise + " is not a valid Menu Option! Please Select Another."); 

    }while(choice != 6 /*Exit loop when choice is 6*/); 



    } 

} 
2

你有什麼做一個總體思路,但是你正在讓你的循環結束條件比它所需要的更復雜。嘗試使用「默認」選項來捕捉超出範圍的任何輸入。這樣你可以簡化你的結局條件到「6」(退出案例)。簡單地顯示:

do{ 
    //Menu options 
    System.out.print("6.) Exit\n"); 
    System.out.print("\nEnter Your Menu Choice: "); 

    choice = input.nextInt(); 

    switch(choice){ 
     //Your cases from 1 to 6. 
     default: 
      System.out.println("Invalid menu choice; try again."); 
      break; 
    } 
}while(choice != 6); 

如果選擇選項不適用於您的代碼中創建的任何情況,則會調用以下默認值。

+0

我從每個節目中介紹了幾個概念,非常感謝大家,現在變得更有意義。 –

2

您的整個執行流程是錯誤的。你應該在案件之前把錯誤的菜單選擇檢查(在你的案例中是if)。並且要有無限的菜單循環,只需添加另一個if即可打破無限的while-loop

僞代碼:

while(true){ 
//enter your choice, 8 to exit 
    if(choice != valid_range){ 
//error message 
    } 
switch(choice){ 
    case 1: //code 
    case 2: //code 
    . 
    . 
    . 
    case 7: //code 
    if (choice == 8) { 
break; //will give flow control to next element after the while statement 
    }  
} 
}