gpt4 book ai didi

java - While循环随机循环。无法弄清楚为什么。

转载 作者:行者123 更新时间:2023-11-29 04:24:21 24 4
gpt4 key购买 nike

这里是 Java 菜鸟。我正在尝试编写一个“应用程序菜单”程序,为用户提供他们可以运行的不同应用程序的主菜单。一旦他们做出选择,该应用程序就会运行,然后为他们提供返回主菜单或退出程序的选项。我在这里遇到了一个问题,如果用户通过反复返回主菜单来运行多个应用程序,当他们最终选择退出程序的选项时,系统会提示他们进行退出选择的次数与用户运行不同的应用程序。意思是,如果在运行期间,他们运行应用程序 4 次,他们会再次收到 4 次“1 返回主菜单或 2 退出”提示。帮助??

public class Menu {
private MathPractice math = new MathPractice();
private Scanner scan = new Scanner(System.in);
private Calculator calc = new Calculator();
private BasePage base = new BasePage();
private String menuHeader = "Welcome to the Math Applications Menu";

public void mainMenu()
{
while (true){
System.out.println();
base.headerUnderline(menuHeader);
System.out.println(menuHeader);
base.headerUnderline(menuHeader);
System.out.println("Enter 1 for Bill Pay");
System.out.println("Enter 2 for Multiplication Table");
System.out.println("Enter 3 for Test Score");
System.out.println("Enter 4 for Calculator");
base.headerUnderline(menuHeader);

int userChoice = scan.nextInt();

if (userChoice == 1)
{
math.billPay();
postAppMenu();
break;
}
else if (userChoice == 2)
{
math.multiplicationTable();
postAppMenu();
break;
}
else if (userChoice == 3)
{
math.testScore();
postAppMenu();
break;
}
else if (userChoice == 4)
{
calc.calculator();
postAppMenu();
break;
}
else {
System.out.println("Please select a valid option!");
}
}
}

private void postAppMenu()
{
while (true){
base.headerUnderline(menuHeader);
System.out.println("Enter 1 for Main Menu");
System.out.println("Enter 2 to Quit");
base.headerUnderline(menuHeader);

int userChoice = scan.nextInt();

if (userChoice == 1){
mainMenu();
}
else if (userChoice == 2){
System.out.println("Thank your for using the Math Application.");
System.out.println("Have a good day. Goodbye.");
break;
}else {
System.out.println("That's not a valid selection");
}
}

}
}

最佳答案

您正在从 postAppMenu 调用 mainMenu。无需坐在这里进行完整的静态分析,我认为每次进入 postAppMenu 时都会再次调用 mainMenu,这意味着您正在深入函数堆栈。当您最终决定退出时,它必须一次回滚一层。

尝试重写,而不是从 postAppMenu 调用 mainMenu,您只需让 postAppMenu“返回”回到 mainMenu。

除非您打算实现某种递归算法,否则方法 A 调用方法 B 而方法 B 调用方法 A 通常不是一个好主意。可以做到,但可能会很棘手。

关于java - While循环随机循环。无法弄清楚为什么。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47169654/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com