java - Java 中的 Do-While 限定符和总计

标签 java

我正在尝试一些基本的 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/

相关文章:

java - 签名的java小程序有限制吗?

java - 带有继承的 JPA 映射树结构

java - 使用缓冲区读取器读取给定输入的数据 block

java - 您现在可以告诉我为什么不在此 HashSet 代码中调用 equals() 吗?

java - HashMap 不添加重复键

java - 如何使用限制时间的guava缓存加载功能?

java - Mockito:模拟一个操作输入数组参数的方法

java - SQLite Android 问题

java - 按索引查找 token 进行括号匹配

java - 如何创建不需要绘图的简单游戏循环