gpt4 book ai didi

JAVA:创建菜单循环

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

我的程序包含一些选项,用户可以通过输入数字来选择这些选项,从而完成特定任务。目前,我的代码设置了 if 和 else if 循环以在一定数量的输入时完成任务。但是,此时程序在完成一项任务后终止。我希望用户能够输入另一个数字来完成另一个任务。我曾尝试用 while 循环和退出选项包围代码,以允许用户退出循环并结束程序,但这不起作用并导致“java.util.NoSuchElementException”。该程序在没有 while 循环的情况下运行良好。

这是当前代码的示例,希望能传达我的意思:

System.out.println("Enter one of the following commands:");
System.out.println("1 - something..");
System.out.println("2 - something else..");
System.out.println("3 - exit");
Scanner scanchoice = new Scanner(System.in);
System.out.println();
System.out.println("Enter \"1\", \"2\" or \"3\"");
int choiceentry = scanchoice.nextInt();

while (choiceentry != 3) {

if (choiceentry < 1 || choiceentry > 3) {

System.out.println("Enter \"1\", \"2\", \"3\" or \"4\"");
choiceentry = scanchoice.nextInt();

}

else if(choiceentry == 1) {
// ..do something
}
else if(choiceentry == 2) {
//..something else
}
else if(choiceentry == 3) {
//...exit program
}

}

所以我想进入这个循环,只有退出才能终止程序。我希望 while 循环将用户带回菜单,允许您选择另一个选项,但是这是行不通的。这段代码有什么问题?我该如何实现这个想法?

提前致谢!

最佳答案

在调用 Scanner.nextInt() 之前使用 Scanner#hasNextInt() 摆脱 NoSuchElementException

if(scanchoice.hasNextInt())
choiceentry = scanchoice.nextInt();

hasNextInt() 仅当下一个标记是有效的 int 时才返回 true

你可以这样做

    //set choiceentry to -1, this will make it to enter while loop
int choiceentry = -1

while(choiceentry < 1 || choiceentry > 3){

System.out.println("Enter \"1\", \"2\", \"3\" or \"4\"");
if(scanchoice.hasNextInt())
choiceentry = scanchoice.nextInt();

}

switch(choiceentry){
case 1:
//do logic
break;
case 2:
//do logic
break;
case 3:
//do logic
break;
}

我已将其更改为使用 switch 语句,因为它们在获取输入数据时会派上用场

关于JAVA:创建菜单循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20681616/

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