Java 二次规划特定输出

Java 二次规划特定输出,java,quadratic-programming,Java,Quadratic Programming,我希望二次型程序只打印必要的输出。 代码如下: 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 -

我希望二次型程序只打印必要的输出。 代码如下:

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.");
}
publicstaticvoidmain(字符串[]args){
double a=double.parseDouble(args[0]);
double b=double.parseDouble(args[1]);
double c=double.parseDouble(args[2]);
双温,第一,第二;
温度=(b*b-(4*a*c));
第一个=(-1*b)+数学sqrt(temp))/(2*a);
第二个=(-1*b)-Math.sqrt(temp))/(2*a);
如果(温度>0)
System.out.println(第一);
如果(温度==0)
如果(第一个==第二个)
System.out.println(第一);
其他的
System.out.println(第一);
System.out.println(秒);
如果(温度<0)
System.out.println(“没有解决方案”);
}
当我写作时:java二次型1 0 1 它带回:“楠 没有解决办法。” 什么是NaN?

当我写作时:java二次1-21 它打印两次: "1.0 1.0". 如何转换为一个?因为我已经编写了这个if命令: 如果(第一个==第二个)


非常感谢你

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

多个输出可能是因为最后一个
else
。即使您对代码进行了缩进,使其看起来像两个
println
s仅在
temp==0
first!=第二个
,它们不是,只有第一个
println
else
中,第二个每次都会执行。取而代之的是:

else {
    System.out.println(first);
    System.out.println(second);
}
当b=0时,这将变为:

temp = -(4 * a * c);

当a和c为正时,温度为负,不能取负数的平方根。

嘿,非常感谢!它确实有效,但当有两个答案时仍然存在问题。例如,对于“java二次1 1-2”-它只打印“1.0”,甚至认为它应该打印1.0和-2.0。@Dana在这种情况下
temp
是9(1*1-(4*1*-2)=1--8=9),所以它将进入
if(temp>0)
并首先打印
。我修复了它!谢谢:)
temp = -(4 * a * c);