二次规划 - 特定输出

Quadratic programming - specific output

我希望 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二次方 1 0 1 它带回:“NaN 没有解决办法。” NaN 是什么?

当我写的时候:java二次方 1 -2 1 它打印两次: “1.0 1.0"。我如何变成一个? 因为我已经写了这个 if 命令: 如果(第一==第二)。

非常感谢!!!

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

多个输出可能是因为最后一个else。即使您缩进了代码,看起来两个 println 只在 temp == 0first != second 时才执行,但它们不会,只有第一个 printlnelse 中,每次都会执行第二个。而是使用:

else {
    System.out.println(first);
    System.out.println(second);
}
temp = (b*b - (4 * a * c));

当 b = 0 时,这变成:

temp = -(4 * a * c);

当 a 和 c 为正时,temp 为负,并且不能对负数求平方根。