package characterBack;import java.util.Scanner;public class character { public static void main(String[] ags)
{
System.out.println("请输入数");
Scanner sc=new Scanner(System.in);
double n=0;
double sum=0.0;
boolean compputer=true;
try{double temp=sc.nextDouble(); for(int i=0;i<ags.length;i++)
{
temp=Double.parseDouble(ags[i]);
sum+=temp;
System.out.println("总数:"+sum);
} if(compputer)
{
n=sum/ags.length;
System.out.println("平均数是:"+n);
}
}catch(Exception e)
{
System.out.println("对不起,你输入了非数字字符");
compputer=false;
}
}
}运行结果是
请输入数
23
平均数是:NaN
为什么是NaN呢
{
System.out.println("请输入数");
Scanner sc=new Scanner(System.in);
double n=0;
double sum=0.0;
boolean compputer=true;
try{double temp=sc.nextDouble(); for(int i=0;i<ags.length;i++)
{
temp=Double.parseDouble(ags[i]);
sum+=temp;
System.out.println("总数:"+sum);
} if(compputer)
{
n=sum/ags.length;
System.out.println("平均数是:"+n);
}
}catch(Exception e)
{
System.out.println("对不起,你输入了非数字字符");
compputer=false;
}
}
}运行结果是
请输入数
23
平均数是:NaN
为什么是NaN呢
n=sum/ags.length;
此时 agr是个ags String[0] (id=16) 就是说没有长度,长度为0,你用一个数除以一个0,当然会出现NaN,
我debug的结果:ags String[0] (id=16)
sc Scanner (id=30)
n NaN
sum 0.0
compputer true
temp 23.0
n=sum/ags.length;
这句除数为0,结果必然是NaN.