我无法弄清楚如何让程序循环浏览转换菜单,然后从选择“4 Return”返回主菜单,如示例所示。
<小时/>程序输出的示例:
主菜单
输入距离
退出程序
Please enter your choice: 1
Enter a distance in meters: 500
转换菜单
转换为公里
转换为英寸
转换为英尺
返回
Enter your choice: 1
500 meters is 0.5 kilometers
转换菜单
转换为公里
转换为英寸
转换为英尺
返回
Enter your choice: 3
500 meters is 1640.5 feet
转换菜单
转换为公里
转换为英寸
转换为英尺
返回
Enter your choice: 4
主菜单
输入距离
退出程序
<小时/>Please enter your choice: 2
Good Bye!
当该程序不包含主菜单和循环返回时,我找到了多种解决方案,但我似乎找不到任何相关内容。
这是我所拥有的:
public static void main(String[] args) {
Scanner keyboard = new Scanner(System.in);
int choice;
int option;
double meters = 0;
conversionControl();
choice = keyboard.nextInt();
switch (choice) {
case 1:
System.out.println("\nEnter a Distance in Meters:");
meters = keyboard.nextDouble();
break;
case 2:
quitProgram();
break;
default:
showError("Please Enter a Valid Option");
conversionControl();
option = keyboard.nextInt();
if (option == 1) {
System.out.println("\nEnter a Distance in Meters:");
meters = keyboard.nextDouble();
}
else if ( option == 2) {
quitProgram();
}
break;
}
do{
menu();
choice = keyboard.nextInt();
switch (choice) {
case 1:
showKilometers(meters);
break;
case 2:
showInches(meters);
break;
case 3:
showFeet(meters);
break;
case 4:
conversionControl();
option = keyboard.nextInt();
if (option == 1) {
System.out.println("\nEnter a Distance in Meters:");
meters = keyboard.nextDouble();
}
else if ( option == 2) {
quitProgram();
}
break;
default:
showError("Please Enter a Valid Option");
menu();
choice = keyboard.nextInt();
break;
}
} while(choice != 0); {
}
}
我想我确实找到了自己的出路,但我一直认为这不是正确的方法或者有更简单的方法。另外,在测试某些输入时会出现一些错误(主要是 showError 方法调用将输出不正确的菜单,或者在多次错误输入后关闭程序)。
任何帮助/建设性批评将不胜感激。我对编码有点陌生(了解 HTML),对这个网站也不太熟悉。
谢谢! 鲍勃
最佳答案
因为它看起来像一个练习,所以我不会给你完整的代码,而是给你一个伪代码来帮助你理解这里的策略。
为了澄清,我将您的第一个菜单命名为 mainMenu
,将第二个菜单命名为 convMenu
。
您已经为 convMenu
实现了良好的策略。这个想法是创建一个循环,并且仅当用户告诉您时才存在。您缺少的是对 mainMenu
执行相同的操作,并将 convMenu
视为 mainMenu
的子菜单。这意味着当您位于 convMenu
中时,您并不处于 mainMenu
之外。
//That's pseudo code
do {
displayMainMenu();
readUserInput();
switch(userInput) {
case 1 :
//here you put your convMenu
do {
displayConvMenu();
readUserInput();
switch(userInput) {
case 1, 2, 3 :
doConvertion();
case 4 :
exitConvMenu = true;
default :
//wrong input display a message and loop
}
} while(!exitConvMenu)
case 2:
exitMainMenu = true;
default :
//wrong input display a message and loop
}
} while(!exitMainMenu)
关于Java循环米转换程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55039491/