函数返回中有两种不同的数据类型

时间:2013-03-29 07:10:04

标签: java types return

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

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

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

7 个答案:

答案 0 :(得分: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");
    }
}

答案 1 :(得分:2)

不确定为这样的事情设置单一方法是否是一种好习惯。但是您可以创建自己的类,其结果和错误作为属性,然后从您的方法返回该类的对象。

答案 2 :(得分:2)

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

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

public float division(int x, int y) throws Exception {   ///ArithmaticException
    return ((float) x) / y;
}

答案 3 :(得分:1)

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

答案 4 :(得分:1)

最简单的方法 -

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

答案 5 :(得分:1)

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

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

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

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

答案 6 :(得分:1)

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

伪代码

if(y!=0){

获取division(x/y)

}else{

Cannot divide by 0

}