将double除以0将返回无穷大

时间:2014-10-03 22:45:25

标签: java eclipse

代码基本上给了我infinty和sting undefined。我只需要undefined。我明白为什么它给无限但不明白如何摆脱它。我不能使用异常,因为错误应该只打印undefined而不是其他内容。

double divide;
double a;
double b = 0;

if(args.length > 3){
    System.out.println("Argument count mismatch");
}
else if(args.length == 1){
    System.out.println("Argument count mismatch");
}
else{
    a = Integer.parseInt(args[1]);
    b = Integer.parseInt(args[2]);
    divide = a / b;
    System.out.println(divide);
    if (b == 0) {
        System.out.println("Undefined");
    }
}

2 个答案:

答案 0 :(得分:2)

您可以使用Double.isInfinite(double)测试结果(您可能还想使用Double.isNaN(double)之类的内容,

double a = 10;
double b = 0;
double divide = a / b;
if (Double.isInfinite(divide) || Double.isNaN(divide)) {
    System.out.println("Undefined");
} else {
    System.out.println(divide);
}

输出

Undefined

答案 1 :(得分:1)

除了Elliott Frisch之外,另一种方法是使用Double类中的常量检查正无穷大。

if (divide == Double.POSITIVE_INFINITY || divide ==  Double.NEGATIVE_INFINITY)
{
    System.out.println("Undefined");
}