Java 主菜单出现一次,但关闭,甚至不输入退出选项。也没有正确调用函数?
当我运行我的程序时使用!choice.equals6,它会运行我的主菜单一次,但不会执行所选的功能,不会发生任何事情,并且会立即退出。但是,如果while循环中的条件是choice.equals6,它将执行我的一个函数,当我从1-5中选择时,主菜单将重新显示并退出,而我甚至没有输入6。菜单不会调用所选的其他功能。我有点懊恼,这两种情况在我正在进行的项目中都不起作用 我用了debbuger,当我进入状态时,它不会让我通过!选择。相等。在我决定退出程序之前,我希望主菜单会一直要求我输入一个选项Java 主菜单出现一次,但关闭,甚至不输入退出选项。也没有正确调用函数?,java,function,oop,menu,submenu,Java,Function,Oop,Menu,Submenu,当我运行我的程序时使用!choice.equals6,它会运行我的主菜单一次,但不会执行所选的功能,不会发生任何事情,并且会立即退出。但是,如果while循环中的条件是choice.equals6,它将执行我的一个函数,当我从1-5中选择时,主菜单将重新显示并退出,而我甚至没有输入6。菜单不会调用所选的其他功能。我有点懊恼,这两种情况在我正在进行的项目中都不起作用 我用了debbuger,当我进入状态时,它不会让我通过!选择。相等。在我决定退出程序之前,我希望主菜单会一直要求我输入一个选项 pr
private void mainMenu()
{
String input = JOptionPane.showInputDialog("Persona Library Main Menu\n" +
"1. Add from this list:\n" +
" -Language\n" +
" -Fiction\n" +
" -Geography\n" +
"2. Search Item By ID\n" +
"3. Remove this from Library\n" +
"4. Random Books\n" +
"5. Print complete list or by category\n" +
"6. Exit Program");
String choice = input;
while(!choice.equals("6"));
{
switch(choice)
{
case "1":
addToLibrary();
break;
case "2":
searchByIDtoPrint();
break;
case "3":
removeFromLibrary();
break;
case "4":
//undecided;
break;
case "5":
searchCategoryToPrint();
break;
case "6":
//undecided
break;
}
input = JOptionPane.showInputDialog("Persona Library Main Menu\n" +
"1. Add from this list:\n" +
" -Language\n" +
" -Fiction\n" +
" -Geography\n" +
"2. Search Item By ID\n" +
"3. Remove this from Library\n" +
"4. Random Books\n" +
"5. Print complete list or by category\n" +
"6. Exit Program");
choice = input;
}
}
从我所能读到的情况来看——情况虽然如此!choice.equals6仅在choice不等于6时运行,这意味着如果在第一次输入选择时不输入6,它将永远不会进入循环,只需转到下一个输入提示 由于在您第二次要求输入数字后,输入提示不在循环内,因此程序将到达函数末尾,我假设终止-这是您的一些问题所在,您没有告诉它在第二次提示后执行任何操作 我可以推荐一个do while循环,如:
do { /*Enter input prompts and case statements here*/ } while (program == true)
仅当您选择关闭程序的选项时才设置输入。
这样,您可以保证程序至少运行一次,如果您从未选择退出,只需返回提示符即可
*编辑-另外,我刚刚注意到,在while循环中,您从未更改选择,这意味着您将处于无限循环中
我希望这能回答你的问题。分号会使你的while循环短路:while!选择。等式6@装满鳗鱼的气垫船谢谢你的指点。我终于让它工作了。我在eclipse中的背景可能让我很难看到while条件旁边的分号,哈哈!谢谢谢谢你的建议。我已经将while循环改为do-while,现在它工作得很好。我已经完全忘记了do while,因为我已经用过一次,再也没有用过。虽然这将是我第二次使用。谢谢不用担心:很高兴我能帮忙!