【发布时间】:2016-03-22 17:27:21
【问题描述】:
我有一个简单的菜单系统设置,用户点击 8 离开。但是由于某种原因,当我在测试期间达到 8 时,它只是回到循环的顶部,就像什么都没发生一样。
package potluck;
import java.util.*;
import potluck.*;
public class Controller {
private Scanner input;
private final static int USER_LOGIN = 0;
private final static int CREATE_MEMBER = 1;
private final static int CREATE_ADMIN = 2;
private final static int CREATE_RECIPE = 3;
private final static int COMMENT = 4;
private final static int DELETE_RECIPE = 5;
private final static int EXIT = 8;
public Controller(){
input = new Scanner(System.in);
startUp();//no better name to be thought of
}
public void startUp() {
// TODO Auto-generated method stub
int choice;
do {
this.displayMenu();
choice = input.nextInt();
input.nextLine();// clears carriage return
//depending on choice takes to a different menu
switch (choice) {
case CREATE_MEMBER:
Member member = new Member();
break;
// case CREATE_ADMIN:
// member.addAdmin();
// break;
case CREATE_RECIPE:
Recipe.addRecipe();
break;
case COMMENT:
Recipe.addComment();
break;
case DELETE_RECIPE:
Recipe.deleteRecipe();
break;
case EXIT:
System.out.println("Thanks for using our software");
break;
default:
System.out.println("Error, Invalid selection.");
}
} while (choice != 8); //choice 8 exits
}
private void displayMenu() {
System.out.println("1 Create Member");
System.out.println("2 Create Admin Member");
System.out.println("3 Create Recipe");
System.out.println("4 Leave Comment");
System.out.println("5 Delete Recipe");
System.out.println("8 Exit");
System.out.println("Please enter menu option, to exit enter 8");
}
}
在测试中它声称选择是 8,这应该会破坏 do while...但不会...
更新:在复制代码时,我留下了一些被告知不要使用的解决方法。我在选项 8 下有 system.exit,但被告知这是错误代码
【问题讨论】:
-
它之前做了一个
System.exit(choice); -
我测试了你的代码,用 8 执行 System.exit 并终止程序
-
@gfelisberto 你是如何测试它的?
Member和Recipe是 Java 中的类吗? -
Sam Murdock,您可能在重新编译之前忘记保存文件了。或者干脆忘记重新编译它。
-
@Gendarme 刚刚评论了这些行。唯一需要测试的部分是查看输入的键盘是否被读取。
标签: java loops switch-statement do-while