为什么return语句在方法中使用数学函数时抛出错误。
public class HCF_1 {
static int hcf(int a, int b)
{
int res = Math.max(a,b);
while(true)
{
if(res%a==0 && res%b==0)
return res;
else res++;
}
return res;
}
public static void main(String[] args) {
System.out.println(hcf(5,25));
}
}
3条答案
按热度按时间sczxawaw1#
while循环是一个永无止境的循环,只在if块中提到的条件下转义,if块是一个
return
声明而不是break
声明。因此,最后一行的方法hcfreturn res;
在任何情况下都无法到达。gwbalxhn2#
这可能有帮助,也可能没有帮助,但是
while(true)
语句是真正的代码味道。您可以将此方法重写为:现在只有一个return语句,没有快捷方式。
注意操作
!(res % a == 0 && res % b == 0)
与…相同res % a != 0 || res % b != 0
,由于布尔逻辑的特性:~(A AND B) == ~A OR ~B
.quhf5bfb3#
你的代码在
if-else
你生命中最后一行无法到达的原因return res
,所以你必须做两件事:拆下内部的回路
if
加上休息时间。返回方法的最后一行
return res;
```public class HCF_1 {
}