首先。。麻烦格式化一下代码
然后你输入 0 0 0之后先进入了else,才进入
if (a == 0 && b == 0 && c == 0)
所以先打印了NaN才break
请把你的程序用 ‘代码’ 控件表达出来
import java.util.Scanner;
public class Main {
public static void main(String[] args)
{double a,b,c,x1,x2,dt;
Scanner sc=new Scanner(System.in);
while(sc.hasNextDouble()) {
a=sc.nextDouble();
b=sc.nextDouble();
c=sc.nextDouble();
dt=Math.pow(b, 2)-4*a*c;
if (dt<0) {
System.out.println("Unanswered");
} else if(dt == 0 &&a!=0 &&b!=0 &&c!=0){
x1=x2=(-b)/(2*a);
System.out.printf("x1=%.2f x2=%.2f\n",x1,x2);
}
else {
x2=(-b+Math.sqrt(dt)/(2*a));
x1=(-b-Math.sqrt(dt)/(2*a));
System.out.printf("x1=%.2f x2=%.2f\n",x1,x2);
}
if(a==0&&b==0 &&c==0 ) {
break; }
}
}
}
两组分支,第一组分支进行输出,第二组分支判断跳出。
跳出之前会先走第一组输出分支的