继续添加两个数字,直到输入不是 double 类型

Keep adding two numbers until the input is not a double type

我正在尝试制作一个简单的计算器程序,用户在其中输入两个值,从操作 class 调用方法 add() 并添加值并显示结果。然后我使用一个 do while 循环,在这个循环中,用户不断输入值,这些值被添加到最后一个总数中并显示结果。它必须保持 运行 除非用户输入一些不是双精度类型的输入。

import java.util.Scanner;

public class App {
    public static void main(String[] args) {
        Scanner input = new Scanner(System.in);

        System.out.println("Enter the first number: ");
        double number = input.nextDouble();

        System.out.println("Enter the second number: ");
        double number2 = input.nextDouble();

        double total = Operations.add(number, number2);
        System.out.println(total);

        System.out.println("Enter the number again: );
        number2 = input.nextDouble();

        do {
            total = Operations.add(total, number2);
            System.out.println(total);
            System.out.println("Enter the number again: ");
            number2 = input.nextDouble();
        } while (input.hasNextDouble());

        System.out.println("Exit.");
    }
}

这是操作 class

public class Operations {
    public static double add(double n1, double n2) {
        return n1 + n2;
    }
}

将前两个值相加,并显示结果。然后它再次询问该值,用户输入,并显示结果。但是从这里开始,某个地方出现了一个问题,我一直在努力弄清楚但无法做到。所以请查看我的代码并告诉我问题出在哪里。它在 do while 循环中我做错了。

输出:

输入第一个数字:

5

输入第二个数字:

2

7.0

再次输入号码:

1

8.0

请再次输入号码:

2

这里的程序是运行,但是当我按2时什么都不做。例如,如果我再次按6,它仍然会把2(我之前输入的)加到总数上,显示

6

10.0

请再次输入号码:

您的问题在于事情发生的顺序。你想在do-while的开头提示和输入:

    do {
      System.out.println("Enter the number again: ");
      number2 = input.nextDouble();
      total = Operations.add(total, number2);
      System.out.println(total);
    } while (input.hasNextDouble());

这使得第一次重新提示和重新输入变得多余,因此您的最终 class 看起来像:

    public static void main(String[] args) {
      Scanner input = new Scanner(System.in);

      System.out.println("Enter the first number: ");
      double number = input.nextDouble();

      System.out.println("Enter the second number: ");
      double number2 = input.nextDouble();

      double total = Operations.add(number, number2);
      System.out.println(total);

      do {
        System.out.println("Enter the number again: ");
        number2 = input.nextDouble();
        total = Operations.add(total, number2);
        System.out.println(total);
      } while (input.hasNextDouble());

      System.out.println("Exit.");
    }