Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.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 - Fatal编程技术网

Java 为什么这个不能正常运行?

Java 为什么这个不能正常运行?,java,string,Java,String,所以我已经学习了Java的基础知识,并且正在练习一些新手项目。我目前正在做这个项目: 我不知道为什么我的代码不起作用: public class main { public static void main(String[] args) { System.out.println(frontBack("java")); } public static String frontBack(String str) { if (str.le

所以我已经学习了Java的基础知识,并且正在练习一些新手项目。我目前正在做这个项目:

我不知道为什么我的代码不起作用:

public class main {

    public static void main(String[] args) {
        System.out.println(frontBack("java"));

    }

    public static String frontBack(String str) {

        if (str.length() < 1) {
            return str;
        } else if (str.length() >= 2) {

            char a = str.charAt(0);
            char b = str.charAt(str.length() - 1);

            str.replace(a, b);

        }
        return str;

    }

}
公共类主{
公共静态void main(字符串[]args){
System.out.println(frontBack(“java”));
}
公共静态字符串前向(字符串str){
如果(str.length()<1){
返回str;
}else if(str.length()>=2){
字符a=str.charAt(0);
字符b=str.charAt(str.length()-1);
str.replace(a,b);
}
返回str;
}
}

它运行,但不会将前面的字符与后面的字符交换。我看了一下网站上的解决方案,它对我来说也很有意义。。简单得多,但为什么我的代码不能工作?另外,我认为我没有正确使用return关键字…

,因为你没有用新值设置str

函数返回一个字符串

public class main {

    public static void main(String[] args) {
        System.out.println(frontBack("java"));

    }

    public static String frontBack(String str) {

        if (str.length() < 1) {
            return str;
        } else if (str.length() >= 2) {

            char a = str.charAt(0);
            char b = str.charAt(str.length() - 1);

            str = str.replace(a, b);
            //str = str.replace(b, a); maybe you need it 

        }
        return str;

    }

}
公共类主{
公共静态void main(字符串[]args){
System.out.println(frontBack(“java”));
}
公共静态字符串前向(字符串str){
如果(str.length()<1){
返回str;
}else if(str.length()>=2){
字符a=str.charAt(0);
字符b=str.charAt(str.length()-1);
str=str.replace(a,b);
//str=str.replace(b,a);也许你需要它
}
返回str;
}
}
简单

return b + str.substring(1, str.length() - 1) + a;
str.replace(…)返回一个字符串,因此(即使它是正确的)您将丢失返回值

方法替换替换字符的一致匹配序列,但需要在两个位置替换不同的值。替换对于最后一个字符不好,因为这个字符可能出现在较早的位置,所以您也应该在那里替换

通常,你还必须考虑StRelthTh()= 1;在这里,它碰巧失败了,并且还返回了原始字符串。但最好在代码中明确这一点:

if( str.length() <= 1 ){
    return str;
} else {
    char a = str.charAt(0);
    char b = str.charAt(str.length() - 1);
    return b + str.substring(1, str.length() - 1) + a;
}

如果(str.length()更正您需要分配
replace
的结果。但是,
replace
对于此作业是错误的工具。我同意,这不是最好的方法。我只是修复代码。