Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/355.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 继续添加两个数字,直到输入不是双精度类型_Java_Types_Calculator - Fatal编程技术网

Java 继续添加两个数字,直到输入不是双精度类型

Java 继续添加两个数字,直到输入不是双精度类型,java,types,calculator,Java,Types,Calculator,我试图制作一个简单的计算器程序,其中用户输入两个值,从Operations类调用add()方法,然后添加值并显示结果。然后我使用了一个do while循环,在这个循环中,用户不断地输入值,这些值被加到最后一个总数中,结果就会显示出来。它必须保持运行,除非用户输入一些不是double类型的输入 import java.util.Scanner; public class App { public static void main(String[] args) { Scan

我试图制作一个简单的计算器程序,其中用户输入两个值,从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.");
    }
}
这是操作课

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

它将前两个值相加,并显示结果。然后,它再次要求用户输入值,并显示结果。但从现在开始,我一直在努力想办法解决某个地方的问题,但却无法解决。所以请看一下我的代码,告诉我问题出在哪里。这是在do-while循环中我做错的事情

输出:

输入第一个数字:

五,

输入第二个数字:

二,

7.0

再次输入号码:

一,

8.0

请重新输入号码:

二,

这里程序正在运行,但当我按2时什么也不做。例如,如果我再次按6,它仍会将2(我之前输入的)添加到总数中,并显示该值

六,

10.0


请重新输入号码:

您的问题在于事情发生的顺序。您希望在do开始时进行提示和输入,同时:

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

“但从现在开始,某个地方有个问题”。有什么问题吗?你有例外吗?您正在对数字2调用
input.nextInt()
,这是一个double.no。从那里开始,当我输入一个值时,什么都不会发生(程序一直在运行)。当我再次输入时,它被接受,添加到总数并显示。但是当我输入另一个值时,结果是不正确的。只是将其更改为nextDouble(),但结果是相同的。您能给出输入和输出的示例序列吗?在循环之前和内部,您有更多的
nextInt()
调用。很抱歉,忘记编辑do while循环的上部。谢谢,现在开始工作了。非常感谢。现在明白了:)