在这个函数中,我需要两种不同的数据类型来返回,一个浮点数y
不为零,一个布尔值为零。
public XXXXX division(int x, int y){
if(y!=0){
return x/y;
}
else{
return false;
}
}
我知道我可以使用两个函数来实现这一点 1-检查除法的校正 2-在一个函数中计算我想要的正确除法,这可能吗?
不应允许将 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");
}
}
不太确定为类似的事情使用单一方法是否是一种好习惯。但是您可以创建自己的类,并将结果和错误作为属性,然后从您的方法中返回该类的对象。
您可以在调用函数本身之前检查 的值Y
是否为零。不允许将零传递给该函数。
无论如何,如果你将零传递给函数,除以零的情况就会抛出ArithmaticException
. 因此,您的函数可以将该异常抛出给调用者。
public float division(int x, int y) throws Exception { ///ArithmaticException
return ((float) x) / y;
}
也许使用 Double 作为返回类型并正常返回值。如果为 false,则返回 null。
最简单的方法——
public Object division(int x, int y) {
if (y != 0) {
return x / y;
} else {
return false;
}
}
您可以返回Float
,使用null
表示“无结果”:
public Float division(int x, int y) {
if(y != 0) {
return x / (float)y;
} else {
return null;
}
}
也就是说,在这种特殊情况下,返回 IEEE 无穷大或 NaN 可能实际上是有意义的。
请注意,我已经修复了整数除法,因为听起来这不是您想要的。
也许您应该事先检查一下:
伪代码
if(y!=0){
得到division(x/y)
}else{
说Cannot divide by 0
}