我希望Quadratic程序只打印必要的输出。 这是代码:
public static void main(String[] args) {
double a = Double.parseDouble(args[0]);
double b = Double.parseDouble(args[1]);
double c = Double.parseDouble(args[2]);
double temp, first, second;
temp = (b*b - (4 * a * c));
first = ((-1 * b) + Math.sqrt(temp)) / (2 * a);
second = ((-1 * b) - Math.sqrt(temp)) / (2 * a);
if (temp > 0)
System.out.println (first);
if (temp == 0)
if (first == second)
System.out.println (first);
else
System.out.println (first);
System.out.println (second);
if (temp < 0)
System.out.println ("There are no solutions.");
}
当我写作时:java Quadratic 1 0 1 它带回来了:&#34; NaN 没有解决方案。&#34; 什么是NaN?
当我写作时:java Quadratic 1 -2 1 它打印两次: &#34; 1.0 1.0&#34 ;. 我如何成为一个?因为我已经写过这个if命令: if(first == second)。
非常感谢!!!
答案 0 :(得分:0)
NaN问题已在here以及该问题的评论和答案的各个链接中得到解答。
多个输出可能是因为最后一个else
。即使您已经缩进代码,看起来两个println
只在temp == 0
和first != second
时执行,但它们不是第一个println
{1}}位于else
,第二个将在每次执行时执行。改为使用:
else {
System.out.println(first);
System.out.println(second);
}
答案 1 :(得分:0)
temp = (b*b - (4 * a * c));
当b = 0时,这变为:
temp = -(4 * a * c);
当a和c为正时导致temp为负数,而你不能取负数的平方根。