为什么我break后还会输出nan

 

首先。。麻烦格式化一下代码 

然后你输入 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; }
	 }
	 }
	}

两组分支,第一组分支进行输出,第二组分支判断跳出。

跳出之前会先走第一组输出分支的