Java死代码警告+没有矩形形成?

vuktfyat  于 2023-02-20  发布在  Java
关注(0)|答案(3)|浏览(118)

我不确定为什么我的for循环会收到一个死代码警告,我也不知道为什么只打印了一个符号,而不是所需的矩形。

public static String rectangle(int row, int col, char thing) {
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            String character = "" + thing;
            return character;
        }
        return "\n";
    }
    return "";
}

我试着把字符串放在for循环的上面,但是仍然是同样的错误。我也不能在我的代码中使用任何System.out.print。我试过int i = 1; i <= row,也试过不使用return "";,但是我得到了一个错误“没有字符串返回”。

l7wslrjt

l7wslrjt1#

第一个return将在循环的第一次迭代时终止该方法,而不是所有这些返回,您应该附加到字符串并只在末尾返回:

public static String rectangle(int row, int col, char thing) {
    String result = "";
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            String character = "" + thing;
            result += character;
        }
        result += "\n";
    }
    return result
}

话虽如此,使用StringBuilder可能性能更高:

public static String rectangle(int row, int col, char thing) {
    StringBuilder result = new StringBuilder();
    for (int i = 0; i < row; i++) {
        for (int j = 0; j < col; j++) {
            result.append(thing);
        }
        result.append("\n");
    }
    return result.toString();
}
cs7cruho

cs7cruho2#

台词

}
        return "\n";
    }
    return "";
}

将不会正常运行,因为在第一个内循环执行之后,你将以字符串的形式返回新行字符,并在该点终止函数。编译器发现了这一点,因此你得到了“死代码警告”。上面的答案(@Mureinik)解释了如何修复这个问题。

rslzwgfq

rslzwgfq3#

这里的问题是,一旦内部for循环第一次结束,它将返回一个空行,最后一个return语句是无用的,只有当row为0时才会执行,第二个问题是,你已经在循环内声明了变量,但它只能在循环内访问,所以你必须在循环之前声明它,将其作为答案返回,所以把第一个return语句替换成string或者stringBuilder或者你正在使用的任何东西,然后在循环外的方法里声明一个。
这就是代码的样子:

public static String rectangle(int row, int col, char thing) {
        StringBuilder b = new StringBuilder();// using StringBuilder instead of string as it is faster
        for (int i = 0; i < row; i++) {
            for (int j = 0; j < col; j++) {
                b.append(""+thing);
            }
            b.append( "\n");
        }
        return b+"";//converting StringBuilder to string
    }

相关问题