0

在这个函数中,我需要两种不同的数据类型来返回,一个浮点数y不为零,一个布尔值为零。

public XXXXX division(int x, int y){
    if(y!=0){
        return x/y;
    }
    else{
        return false;
    }
}

我知道我可以使用两个函数来实现这一点 1-检查除法的校正 2-在一个函数中计算我想要的正确除法,这可能吗?

4

7 回答 7

5

不应允许将 0 作为除数传递。在这种情况下,您应该抛出异常而不是返回 false:

public float division(int x, int y) {
    if (y != 0) {
        return ((float) x) / y;
    }
    else {
        throw new IllegalArgumentException("division by 0 makes no sense");
    }
}
于 2013-03-29T07:14:17.377 回答
2

不太确定为类似的事情使用单一方法是否是一种好习惯。但是您可以创建自己的类,并将结果和错误作为属性,然后从您的方法中返回该类的对象。

于 2013-03-29T07:12:34.940 回答
2

您可以在调用函数本身之前检查 的值Y是否为零。不允许将零传递给该函数。

无论如何,如果你将零传递给函数,除以零的情况就会抛出ArithmaticException. 因此,您的函数可以将该异常抛出给调用者。

public float division(int x, int y) throws Exception {   ///ArithmaticException
    return ((float) x) / y;
}
于 2013-03-29T07:24:13.753 回答
1

也许使用 Double 作为返回类型并正常返回值。如果为 false,则返回 null。

于 2013-03-29T07:12:10.350 回答
1

最简单的方法——

public Object division(int x, int y) {
    if (y != 0) {
        return x / y;
    } else {
        return false;
    }
}
于 2013-03-29T07:12:52.820 回答
1

您可以返回Float,使用null表示“无结果”:

public Float division(int x, int y) {
    if(y != 0) {
        return x / (float)y;
    } else {
        return null;
    }
}

也就是说,在这种特殊情况下,返回 IEEE 无穷大或 NaN 可能实际上是有意义的。

请注意,我已经修复了整数除法,因为听起来这不是您想要的。

于 2013-03-29T07:14:20.253 回答
1

也许您应该事先检查一下:

伪代码

if(y!=0){

得到division(x/y)

}else{

Cannot divide by 0

}

于 2013-03-29T07:16:39.660 回答