Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/318.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 方法中的空字符串返回语句,这只是名义上的目的还是可以改进?_Java_String_Return - Fatal编程技术网

Java 方法中的空字符串返回语句,这只是名义上的目的还是可以改进?

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)

此代码删除字符串参数中的第一个abc并返回结果字符串

我很困惑,因为我只是返回一个空字符串,因为我写的是字符串而不是void。我会使用System.out.println;随着休息;如果我写了void,但我没有写,因为我在一个练习中使用了它,虽然结果是一样的,但它说的代码不好。如果你有任何意见,我会很高兴的。 下面是我的代码

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