Java 在方法中使用数学函数时,为什么返回语句抛出错误

Java 在方法中使用数学函数时,为什么返回语句抛出错误,java,Java,在方法中使用数学函数时,为什么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语句抛出错误

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));
    }
}
while循环是一个永无止境的循环,只有在if块中提到的条件下才被转义,if块是
return
语句,而不是
break
语句。因此,方法hcf
的最后一行返回res在任何情况下都无法访问


while循环是一个永无止境的循环,只有在if块中提到的条件下才被转义,if块是
return
语句,而不是
break
语句。因此,方法hcf
的最后一行返回res在任何情况下都是不可访问的。

如果您的
返回结果的最后一行出现无法访问的原因,那么您必须做两件事:

  • 如果
  • ,则移除
    内的返回,并添加中断
    
  • 返回方法的最后一行
    returnres

  • 如果您的
    返回结果的最后一行无法访问
    if else
    中的代码段,那么您必须做两件事:

  • 如果
  • ,则移除
    内的返回,并添加中断
    
  • 返回方法的最后一行
    returnres

  • 这可能有帮助,也可能没有帮助,但IMO
    while(true)
    语句是一种真正的代码味道。您可以将此方法重写为:

    公共类HCF_1{
    静态整数hcf(整数a、整数b)
    {
    int res=数学最大值(a,b);
    而(res%a!=0 | | res%b!=0)
    res++;
    返回res;
    }
    公共静态void main(字符串[]args){
    系统输出println(hcf(5,25));
    }
    }
    
    现在只有一个return语句,没有快捷方式


    请注意,操作
    !(res%a==0&&res%b==0)
    res%a!=0 | |分辨率%b!=0
    ,由于布尔逻辑的属性:
    ~(A和B)=~A或~B
    这可能有帮助,也可能没有帮助,但IMO
    while(true)
    语句是真正的代码味道。您可以将此方法重写为:

    公共类HCF_1{
    静态整数hcf(整数a、整数b)
    {
    int res=数学最大值(a,b);
    而(res%a!=0 | | res%b!=0)
    res++;
    返回res;
    }
    公共静态void main(字符串[]args){
    系统输出println(hcf(5,25));
    }
    }
    
    现在只有一个return语句,没有快捷方式


    请注意,操作
    !(res%a==0&&res%b==0)
    res%a!=0 | |分辨率%b!=0
    ,由于布尔逻辑的属性:
    ~(A和B)==A或~B

    它是不可访问的。将第一个
    返回
    替换为
    中断
    。或者删除第二个
    返回值
    。顺便说一句,一旦按照fluffy的建议修复了错误,这将不会给您hcf;它会给你lcm,这能回答你的问题吗?你能不能和蔼可亲一点,把错误信息发出去?这是不可能的。将第一个
    返回
    替换为
    中断
    。或者删除第二个
    返回值
    。顺便说一句,一旦按照fluffy的建议修复了错误,这将不会给您hcf;它会给你lcm,这能回答你的问题吗?你能不能和蔼一点,把错误信息贴出来?
    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; //last line of the method hcf is unreachable
            }
            public static void main(String[] args) {
                
                System.out.println(hcf(5,25));
            }
        }
    
    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)
                    break;
                else
                    res++;
            }
            return res;
        }
    
        public static void main(String[] args) {
    
            System.out.println(hcf(5, 25));
        }
    }