Java:“Unexpected Type; required:Variable; found:value”,试图返回一个值

时间:2015-12-10 19:31:27

标签: java recursion return

如果我想在BlueJ上编译它,它会在第3行的第一个“”处抛出“Unexpected Type; required:Variable; found:value”错误。

public static String binaryCode(int i){
        if(i<=1){
                return "" += i%2;
        }
        return "" += i%2 += binaryCode(i/2);
}
顺便说一下,它必须是一个递归,我知道Loop也可以工作,但它必须在递归中解决。程序应该将二进制值作为字符串从int。

返回

1 个答案:

答案 0 :(得分:3)

使用+运算符,而不是+ =

public static String binaryCode(int i) {
    if (i <= 1) {
        return "" + i%2;
    }
    return "" + i%2 + binaryCode(i/2);
}

请注意,这是非常低效的解决方案。很多String对象都被创建并且必须被销毁(字符串在Java中是不可变的)。更好的解决方案是使用循环和StringBuilder。

使用StringBuilder的解决方案(如果你想提高性能,这段代码的执行速度提高了大约4倍):

public static String binaryCode(int n) {
    StringBuilder sb = new StringBuilder();
    for(int i = n; i > 0; i /= 2) {
        sb.append(i%2);
    }
    return sb.toString();
}