【发布时间】:2015-01-09 00:38:23
【问题描述】:
我创建了一个 while 循环来为我的程序创建一个菜单,它会一直循环直到用户在控制台中输入“退出”。我的问题是,每当我在控制台中输入“Transfer”时,if 语句都会完美运行,但是当它返回到循环的开头时,System.out.println(); 消息会打印两次而不是一次。任何其他选项都不会发生这种情况。
代码:
int x = 0;
while(x != 1) {
System.out.println("To transfer funds, please type 'Transfer'\n" //Typical message
+ "To list recent transactions, please type 'Recent'\n"
+ "To display account details, please type 'Details'\n"
+ "To quit the application, please type 'Quit'");
String Option1 = "Transfer"; //Variables
String Option2 = "Recent";
String Option3 = "Details";
String Option4 = "Quit";
String Menu = ConsoleInput.nextLine();
if (Menu.equals(Option1)) {
//Statements
} else if(Menu.equals(Option2)){
//Statements
} else if(Menu.equals(Option3)){
//Statements
} else if(Menu.equals(Option4)){
//End statement
x++;
}
}
编辑:你们中的一些人在评论最后一个 else 语句中 x 的增量,并说它应该放在 else 语句之外。之所以存在,是因为当用户在控制台中输入“退出”时,它将退出循环,如果将其放在 else 语句之外,那么用户将无法访问其他选项。
编辑 2(解决方案):我终于解决了这个问题。原来它是 if 语句中的扫描仪语句。我应该向大家展示完整的代码,但我认为这只是 if-else-statements 本身。
【问题讨论】:
-
您的代码对我来说很好用。此外,您可能不应该使用
int x作为停止标志。更清晰的解决方案类似于boolean stop = false; while (!stop) { ... if (stopConditon) stop=true;} -
我试用了您的示例,它看起来不错。问题必须在您的“转移”语句中。另外,您是否考虑过使用
break语句而不是取值 0 或 1 的变量?还是在其他方面很重要? -
@lared 否。这样做将终止循环
-
@lared 我认为 OP 使用
x作为控制流变量。 (x++代替break)。否则“循环”将自动退出 -
快速注释——Java 约定声明变量名是驼峰式,而不是标题式。你的
Menu应该是menu,你的ConditionX应该是conditionX,ConsoleInput应该是consoleInput。
标签: java if-statement while-loop