【发布时间】:2019-04-04 18:31:21
【问题描述】:
我做了一个简单的程序,根据公式中的 3 个数字计算 delta。但是,它对小数点后的分数和数字有问题(例如 3.33、3/4)。如果我用它代替任何字母,则会出现错误:
线程“主”java.util.InputMismatchException 中的异常 java.base/java.util.Scanner.throwFor(Scanner.java:939) 在 java.base/java.util.Scanner.next(Scanner.java:1594) 在 java.base/java.util.Scanner.nextInt(Scanner.java:2258) 在 java.base/java.util.Scanner.nextInt(Scanner.java:2212) 在 Main.main(Main.java:11)
如何添加补丁以使程序正常运行?我的代码如下:
import java.util.Scanner;
import java.lang.Math;
import java.util.Locale;
public class Main {
public static void main(String[] args) {
final double n1; //a
final double n2; //b
final double n3; //c
Scanner reader= new Scanner(System.in).useLocale(Locale.US);
System.out.print("calculation of the delta. Enter the first number (a from the formula)");
n1 = reader.nextDouble();
System.out.print("give the second number (b from the formula)");
n2 = reader.nextDouble();
System.out.print("give the last number (c from the formula)");
n3 = reader.nextDouble();
final double delta = Math.pow(n2, 2) - 4 * n1 * n3;
final double d01 = (-n2 + Math.sqrt(delta)) / (2 * n1);
final double d02 = (-n2 - Math.sqrt(delta)) / (2 * n1);
final String dinfo = "Delta is equal: ";
if(delta>0) {
System.out.println(dinfo + (int)delta + " , has [two] zero places, which is equal to: " + (int)d01 + " and " + (int)d02);
}
else if (delta == 0) {
System.out.println(dinfo + (int)delta + ", has exactly [one] zero place, which is equal to: " + (int)d01);
}
else {
System.out.println(dinfo + (int)delta + ", no zero places.");
}
}
}
【问题讨论】:
-
你在 d01 和 d02 计算什么?
-
首先将 double 设置为 n1,n2,n3 的类型
-
我正在计算增量的零位。我已经更改了,但错误仍然出现。
-
将 n1、n2 和 n3 的类型更改为 double 后,还将 nextInt() 方法更改为 nextDouble() .. 此外,在打印语句中删除强制转换为 int
-
我已经更新了。没有变化。
标签: java