我创建了一个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++;
}
}
编辑:你们中的一些人评论了最后一个其他语句中x的增量,并说它应该放在其他语句之外。它在那里是因为当用户在控制台中键入“退出”时,它将退出循环,如果它被放在其他语句之外,那么用户将无法访问其他选项。
编辑2(解决方案):我终于解决了这个问题。原来是if语句中的scanner语句。我应该向大家展示完整的代码,但我认为这只是if-else语句本身。
这只发生在转会选择权上,对吗?你能告诉我转车选项的代码吗?可能那里有打印消息的指令,所以当循环重新开始时,会打印两次消息。
添加:基于您的“转账代码”。这个问题似乎与java.util.Scanner的错误使用有关,但我自己并不确定这个实用程序类。但下面修改的代码对我来说很有用:
public static void main(String[] args){
java.util.Scanner ConsoleInput=new java.util.Scanner(System.in);
String Menu;
String message="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'";
System.out.println(message);
String Option1 = "Transfer"; //Variables
String Option2 = "Recent";
String Option3 = "Details";
String Option4 = "Quit";
while(!((Menu=ConsoleInput.nextLine()).equalsIgnoreCase(Option4))){
if(Menu.equalsIgnoreCase(Option1)){
System.out.println("You have selected transfer");
System.out.println("How much would you like to transfer?");
float deduction;
float total = 2500;
deduction = ConsoleInput.nextFloat();
total = total - deduction;
System.out.println("£" + total + " left in account. Transaction recorded.");
//Fileoutput.println(sf.format(date) + " - £" + deduction + " taken from account. £" + total + " left in account.\n");
System.out.println(message);
}else if(Menu.equalsIgnoreCase(Option2)){
System.out.println("here is your balance...blah, blah, bbla\n");
System.out.println(message);
}else if(Menu.equalsIgnoreCase(Option3)){
System.out.println("here is the details...blah, blah, bbla\n");
System.out.println(message);
}
}
System.out.println("Thanks");
}
要注意的几件事:
Menu.equalsIgnoreCase(Option1)
etc.x
的增量放在time循环之后。除非键入结束,否则永远不会递增x。我想你真的想要更像
private static String[] options = {"Transfer","Recent","Details","Quit"};
private static int C_Transfer = 0;
private static int C_Recent = 1;
private static int C_Details = 2;
private static int C_Quit = 3;
private static int[] optionCase = {C_Transfer, C_Recent, C_Details,C_Quit);
private String menu;
private String message = "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'"
System.out.println(message);
menu = ConsoleInput.nextLine()
while (!menu.equalsIgnoreCase(options[C_Quit]) {
int case = -1;
for (int i=0, i < options.length; i++) {
if (menu.equalsEgnoreCase(options[i]) {
case = i;
break;
}
switch (case)
case C_Transfer: {
break;
}
case C_Transfer: {
break;
}
case C_Transfer: {
break;
}
case C_Transfer: {
break;
}
default: {
System.out.println(message);
}
Menu = ConsoleInput.nextLine();
}
}
我只想用下面的公式从任何给定的数字创建一个因子列表。我不允许使用列表,因此,我模仿使用字符串如下: 例如,假设我们选择num=12:
因此,我当前遇到的问题是,在我完成所有步骤后,“Enter your command(reverse,replace first,replace last,remove all,remove)”语句被打印了两次。 我相信正在发生的是循环执行了两次,但我不知道为什么。如果能帮助解决这个问题,我们将不胜感激。抱歉,如果我的代码格式不好,还在学习如何正确的格式。
大家好,我被一个问题困住了,想不出解决办法。我使用的是while循环,do while循环和for。我知道我的前两个while循环是正确的,我试图完成的是让我的do while循环和for语句打印出与我的第二个while循环相同的东西。 输入要打印的消息? 你好 输入要打印邮件的次数。输入1-20之间的值: 5 使用do-while循环输出... 第6.0行-你好 do-while循环中的时间..
在下面的代码中,我试图提示用户输入一个数字,如果它小于1,则要求输入另一个正数。 在输入正数之前,它似乎一直在工作,但在给出正数后,程序将打印最终的错误消息。 输入正数后,如何阻止打印此错误消息?
问题内容: http://i.stack.imgur.com/XvHm5.png 当我单击“打开”按钮时,它将开始在JTextField上发送垃圾邮件1。而是冻结整个GUI,包括关闭按钮。我正在使用while循环,当您再次单击jButton时,它将停止。因为jButton被冻结,所以我无法停止该程序。我已经读过线程和多线程将有所帮助,但是所有教程都太复杂了,以至于我无法理解。他们说将循环和GUI放
我正在写一份简单的银行申请书。在我的程序中,我使用了while循环。如果用户输入错误,它将再次提示用户输入。 现在的问题是我无法编写任何语句。它总是显示错误(比如:unreachable语句),最终该行不会被打印出来。 我该怎么解决这个问题? [我之所以需要使用,是因为我想打印用户输入的所有信息。] 我正在从事的项目: