Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/github/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
java NaN和-无限_Java_String_Double_Try Catch - Fatal编程技术网

java NaN和-无限

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

如果结果等于NaN或-无穷大,我无法找到捕获的方法,也无法为我的程序下达命令。 每当我在我的程序中输入0,它就会给我一个NaN和-Infinity的结果。 我面临的问题是x1和x2是双类型的,这显然不能与字符串类型相比。任何帮助都将不胜感激

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)