Java 方法中的空字符串返回语句,这只是名义上的目的还是可以改进?
此代码删除字符串参数中的第一个abc并返回结果字符串 我很困惑,因为我只是返回一个空字符串,因为我写的是字符串而不是void。我会使用System.out.println;随着休息;如果我写了void,但我没有写,因为我在一个练习中使用了它,虽然结果是一样的,但它说的代码不好。如果你有任何意见,我会很高兴的。 下面是我的代码Java 方法中的空字符串返回语句,这只是名义上的目的还是可以改进?,java,string,return,Java,String,Return,此代码删除字符串参数中的第一个abc并返回结果字符串 我很困惑,因为我只是返回一个空字符串,因为我写的是字符串而不是void。我会使用System.out.println;随着休息;如果我写了void,但我没有写,因为我在一个练习中使用了它,虽然结果是一样的,但它说的代码不好。如果你有任何意见,我会很高兴的。 下面是我的代码 public static String abc(String str) { int i = 0; while(i < str.length()-2)
public static String abc(String str) {
int i = 0;
while(i < str.length()-2) {
if (str.substring(i, i+3).equals("abc")) {
return str.substring(0, i) + str.substring(i+3);
} else {
if (i == str.length()-3) {
return str;
}
} i++;
} return "";
有关操作字符串的信息,请参阅Java字符串API: 您可以用更少的代码实现同样的效果:
public static String abc(String str) {
return (str.contains("abc")) ? str.replaceFirst("abc", "") : str ;
}
这些代码有太多的bug。1如果str为null,则str.length会导致异常。2如果i+3大于str.length,则会出现边界异常。如果str.length-2为负数,则循环将永远循环。此代码甚至不会编译。您在方法之外有一个return语句…具有指定返回类型的方法必须返回某些内容,无论代码采用何种路径,并且由于您可能不会进入while循环,因此您也需要处理该情况并返回某些内容。虽然我会返回str而不是@Voodoo Yes,但是存在空异常。但是i+3不会大于str.length,因为当i