我正在尝试创建一个简单的计算器程序,其中用户输入两个值,从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
请再次输入号码:
答案 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.");
}