二次编程 - 特定输出

时间:2015-11-06 18:50:11

标签: java quadratic-programming

我希望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)。

非常感谢!!!

2 个答案:

答案 0 :(得分:0)

NaN问题已在here以及该问题的评论和答案的各个链接中得到解答。

多个输出可能是因为最后一个else。即使您已经缩进代码,看起来两个println只在temp == 0first != 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为负数,而你不能取负数的平方根。