【发布时间】:2019-06-26 16:24:40
【问题描述】:
我正在为以下代码使用 while(true) 循环,但我们已停止使用它。我想不出另一种方法。
我尝试过使用 do-while 循环,但这对我的情况没有帮助。
'''java
while(true){
System.out.println("\nSelect the number of the Option you wish to carry out:\n 1) Enter Scores\n 2) Find Golfer\n 3) Display Scoreboard\n 4) Edit Scoresheet\n 5) Exit\n ");
userChoice = integerVerify(); //Used to verify whether user input is a valid number
switch (userChoice) {
case 1:
System.out.println("Please enter the scores in the following order");
displayPlayers(); //Displays scoreboard to help users enter player scores in order.
addScores(); //Used to verify whether user input is a valid String
break;
case 2:
System.out.println("**********PLEASE ENTER THE NAME OF THE PLAYER YOU WISH TO FIND**********");
findPlayer();
break;
case 3:
displayPlayers();
break;
case 4:
options();
break;
case 5:
System.out.println("Are you sure you wish to exit?");
confirm = stringVerify();
if (confirm.equalsIgnoreCase("yes") || confirm.equalsIgnoreCase("y")) {
System.out.println("Thank you for using our application.");
System.out.println("Exiting");
System.exit(0);
}
break;
default:
System.out.println("Please enter an appropriate option.");
}
}
'''
代码需要拒绝任何不在 switch-case 中的东西......但它还需要显示适当的消息,无论是通过函数还是来自循环本身,最终,我仍然需要它循环直到退出选项(案例5)被输入。
【问题讨论】:
-
为什么不允许
while(true)?这看起来像是使用它的有效场景。如果只是不允许while的情况,您可以使用for(;;) -
这是一个作业。他们试图让我们使用更合适的方式来执行循环。但我可能会坚持下去,因为这似乎是更合适的做法
-
我不确定如何在这里进行递归。这种应用程序中的顶级控制循环很常见,您所做的非常好。如果您想获得老师的额外学分,您可以将数字替换为数字常量,如“case DISPLAY:”和“case EXIT:”以提高可读性。
-
您可以将菜单设为一个函数并在 main 方法中调用一次,在默认情况下调用一次,然后在切换后再次调用。在手动关闭程序之前,这应该是不可避免的。
标签: java switch-statement infinite-loop