我正在尝试一些基本的 do-while 代码,但遇到了一些问题。
我希望代码要求用户输入 3 个选项中的 1 个(选择他们想要添加数字的组,或者退出并总计),如果输入不相关的选项,则给出错误,然后总计每组末尾的所有整数。
public static void main(String[] args) {
String answer = "default";
int grp1 = 0;
int grp2 = 0;
int input1 = 0;
int input2 = 0;
do{
System.out.println("Make a selection:\n");
System.out.println("A: Enter a number for Group 1.");
System.out.println("B: Enter a number for Group 2.");
System.out.println("X: Exit and total the numbers for each group.\n");
System.out.println("Select your option: ");
answer = keyboard.next();
if (answer.equalsIgnoreCase("A")){
System.out.println("Enter int: ");
input1 = keyboard.nextInt(); // add an int to grp1
}
else if (answer.equalsIgnoreCase("B")){
System.out.println("Enter int: ");
input2 = keyboard.nextInt(); // add an int to grp2
}
else if (answer.equalsIgnoreCase("X")){
} // exit and total
else {
System.out.println("Invalid option - Try again.");
} // Invalid input - restart
}
while (answer.equals("A") || answer.equals("B"));
grp1 += input1;
grp2 += input2;
keyboard.close();
System.out.println("Group 1's total is: + grp1);
System.out.println("Group 2's total is: + grp2);
}
如果用户没有输入有效选项,我需要添加限定符,我尝试使用else:
else {
System.out.println("Invalid option - Try again.")
}
但这只是跳到打印总数,并且不会要求用户进行其他输入。我怎样才能最好地实现这一目标?
另外,
grp1 += input1;
grp2 += input2;
只计算最后输入的整数,有没有办法让它添加所有输入的整数?
任何帮助,即使在我提出的问题之外,我们都将不胜感激。
最佳答案
我认为您有两个困惑。
1) 代码中的“while”行适用于其上方的“do” block 。这意味着根据 grp1 += 和 grp2 += 行的位置,它们只会运行一次。我建议将这些调用移至循环末尾。您可以将每一行移动到相关 if block 内,以便每次用户在 A 或 B 之后成功输入数字时运行代码。
2) while 条件询问用户是否输入“A”或“B”。意思是如果他们这样做了,则返回到“do”继续循环。如果他们实际上输入了任何其他内容(任何无效答案),它将停止并运行“while”行之后的代码。我认为您真正想要的是 while (!answer.equals("X"))
,它将继续循环,直到用户正确输入“X”字符。
您还需要将那些 grp += 行稍微移动一下。
关于java - Java 中的 Do-While 限定符和总计,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32709850/