if块中的多个return语句

时间:2015-07-26 16:37:22

标签: java

为什么这段代码没有给出编译时错误

package com.test;

public class Recursive {

    public static int name(int number) {
        if (number <= 0)
            return 0;
        return 1 + name(number / 10);

    }

    public static void main(String[] args) {
        System.err.println(name(124));
    }
}

3 个答案:

答案 0 :(得分:0)

因为你没有写括号。每个循环ifelse后面都可以跟一段代码({...}或单个语句。所以你的代码相当于:

package com.test;

public class Recursive {

    public static int name(int number) {
        if (number <= 0) {
            return 0;
        }
        return 1 + name(number / 10);
    }

    public static void main(String[] args) {
        System.err.println(name(124));
    }

}

答案 1 :(得分:0)

您的代码等同于

if (n <0) {
   return 0;
}
return 1 + name (n/10);

这完全合法的代码

答案 2 :(得分:-1)

没有编译时错误的原因是因为您的代码在语法上是正确的。如果代码没有按预期执行,请解释如何。