java NaN和-无限
如果结果等于NaN或-无穷大,我无法找到捕获的方法,也无法为我的程序下达命令。 每当我在我的程序中输入0,它就会给我一个NaN和-Infinity的结果。 我面临的问题是x1和x2是双类型的,这显然不能与字符串类型相比。任何帮助都将不胜感激java NaN和-无限,java,string,double,try-catch,Java,String,Double,Try Catch,如果结果等于NaN或-无穷大,我无法找到捕获的方法,也无法为我的程序下达命令。 每当我在我的程序中输入0,它就会给我一个NaN和-Infinity的结果。 我面临的问题是x1和x2是双类型的,这显然不能与字符串类型相比。任何帮助都将不胜感激 public class Exercise { public static void main(String[] args){ double x1 = 0; double x2 = 0; Scanner scanner = new
public class Exercise {
public static void main(String[] args){
double x1 = 0;
double x2 = 0;
Scanner scanner = new Scanner(System.in);
System.out.println("Feed me with a, b and c");
try{
double a = scanner.nextDouble();
double b = scanner.nextDouble();
double c = scanner.nextDouble();
scanner.close();
double discriminant = (b * b) - 4 * (a * c);
if (discriminant > 0){
x1 = (-b + Math.sqrt(discriminant)) / (2 * a);
x2 = (-b - Math.sqrt(discriminant)) / (2 * a);
System.out.println("The dish of yours has two components " + x1
+ " and " + x2);
}
if (discriminant == 0){
x1 = -b / (2 * a);
System.out.println("The dish of yours has two identical
components " + x1 +" and " + x1);
}
if (discriminant < 0){
System.out.println("The dish of yours doesn't have any
component");
}
}
catch (InputMismatchException e) {
System.out.println("I can't digest letters");
}
catch (Exception e) {
System.out.println("This is inedible");
}
}
}
公开课练习{
公共静态void main(字符串[]args){
双x1=0;
双x2=0;
扫描仪=新的扫描仪(System.in);
System.out.println(“为我提供a、b和c”);
试一试{
双a=scanner.nextDouble();
double b=scanner.nextDouble();
双c=scanner.nextDouble();
scanner.close();
双判别式=(b*b)-4*(a*c);
如果(判别式>0){
x1=(-b+数学sqrt(判别式))/(2*a);
x2=(-b-数学sqrt(判别式))/(2*a);
System.out.println(“你的盘子有两个组件”+x1
+“和”+x2);
}
if(判别式==0){
x1=-b/(2*a);
你的盘子里有两个相同的
部件“+x1+”和“+x1”);
}
if(判别式<0){
System.out.println(“你的盘子里没有任何
组成部分);
}
}
捕获(输入不匹配异常e){
System.out.println(“我不能消化字母”);
}
捕获(例外e){
System.out.println(“这是不能吃的”);
}
}
}
您可以通过执行
if (Double.isNaN(yourResult)) { ... }
通过这样做得到无穷大:
if (Double.isInfinite(yourResult)) { ... }
您不应该使用==
检查NaN
,因为NaN
被认为不等于NaN
或者,您可以只检查a
是否为0。因为这可能是唯一一个无穷大和NaN会出现的情况。如果是,说“我的a盘在哪里?”:)
另外,我刚刚尝试过给出
nannan
,但它什么也没有输出。考虑检查A、B和C是否为Na或无穷大。p> 只需在使用前验证输入a、b和c,即可避免错误
例:检查是否有错误=0. 如果a=0,那么x1或x2是什么?您必须检查
a
是否为0。这是否适用于if(discriminant==0)