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

时间:2015-03-16 22:35:35

标签: java types calculator

我正在尝试创建一个简单的计算器程序,其中用户输入两个值,从Operations类调用方法add()并添加值并显示结果。然后我使用do while循环,其中用户继续输入添加到最后总计的值,并显示结果。它必须继续运行,除非用户输入的输入不是double类型。

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.");
    }
}

这是Operations类

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

请再次输入号码:

1 个答案:

答案 0 :(得分: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());

这使得第一次重新提示并重新输入冗余,因此您的最终类看起来像:

    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.");
    }