在这个函数中,我需要两个不同的数据类型用于返回,一个浮点数y
不为零,一个布尔值为零。
public XXXXX division(int x, int y){
if(y!=0){
return x/y;
}
else{
return false;
}
}
我知道我可以通过使用两个函数1- check校正来实现这一点 - 在一个函数中计算正确的除法我想要它,这可能吗?
答案 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
}