使用案例后如何制作 Java 主菜单循环
How to make a Java Main Menu Loop after using a case
我对 Java 还是个新手,但由于熟悉其他一些编程语言,我知道其中很多的基本布局。我苦苦挣扎的一件事是循环菜单,特别是主菜单。
我不知疲倦地研究了它的方法,但 none 似乎适用于我的程序。我假设它是我在更基本的程序中遗漏的一些愚蠢和小的东西。
在下方查看,感谢任何提示。
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
}
}
您可以在 while 循环中给出整个代码(从显示菜单开始)并将条件设为 true,这样在使用 case 后它会自动重复(就像您使用 6 退出一样)。如果为 eg: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;
}
}
}
}
或者试试这个
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*/);
}
}
您对要做什么有一个大致的想法,但是您使循环结束条件变得比需要的更复杂。尝试使用 "default" 选项来捕获超出范围的任何输入。这样您就可以将结束条件简化为“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);
如果选择选项不适用于您代码中创建的任何案例,则将调用默认值之后的任何内容。
你的整个执行流程是错误的。您应该将错误的菜单选择检查(在您的情况下为 if
)放在 case 之前。要有无限菜单循环,只需添加另一个 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
}
}
}
我对 Java 还是个新手,但由于熟悉其他一些编程语言,我知道其中很多的基本布局。我苦苦挣扎的一件事是循环菜单,特别是主菜单。
我不知疲倦地研究了它的方法,但 none 似乎适用于我的程序。我假设它是我在更基本的程序中遗漏的一些愚蠢和小的东西。
在下方查看,感谢任何提示。
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
}
}
您可以在 while 循环中给出整个代码(从显示菜单开始)并将条件设为 true,这样在使用 case 后它会自动重复(就像您使用 6 退出一样)。如果为 eg: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;
}
}
}
}
或者试试这个
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*/);
}
}
您对要做什么有一个大致的想法,但是您使循环结束条件变得比需要的更复杂。尝试使用 "default" 选项来捕获超出范围的任何输入。这样您就可以将结束条件简化为“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);
如果选择选项不适用于您代码中创建的任何案例,则将调用默认值之后的任何内容。
你的整个执行流程是错误的。您应该将错误的菜单选择检查(在您的情况下为 if
)放在 case 之前。要有无限菜单循环,只需添加另一个 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
}
}
}