1
int length = s.length();

if (length <= 1){
    return s;
}

else {

    return s.charAt(length) + s.substring(1, length-1) + s.charAt(0);

}

我只是想交换字符串的第一个字母和最后一个字母。

例如。苹果-> eppla

它编译得很好,可以很好地处理一个空字符串或一个只有一个字符的字符串。但是对于带有多个字符的字符串,它会说:

StringIndexOutOfBoundsException occured - see console for stack trace

这是否意味着我的代码有问题???

4

4 回答 4

4

试试这个:

int length = s.length();

if (length <= 1) {
    return s;
} else {
    return s.charAt(length - 1) + s.substring(1, length - 1) + s.charAt(0);
}

不同的是s.charAt(length - 1)。请记住,字符串是零索引的,所以最后一个字符是s.charAt(length - 1).

于 2013-04-06T07:34:58.163 回答
1

你想要 s.charAt(length - 1) 开始

于 2013-04-06T07:36:18.500 回答
0
if(str.length()<=1){return str;}

String middle=str.substring(1,str.length()-1);

return str.charAt(str.length()-1)+middle+str.charAt(0);
于 2016-11-25T12:30:30.097 回答
-1
String str;
Scanner sc=new Scanner(System.in);
System.out.println("Enter the String");
str=sc.nextLine();
String word[]=str.split(" ");
int len=word.length;
String temp=word[0];
word[0]=word[len-1];``
word[len-1]=temp;
for (int i = 0; i < word.length; i++) {
    System.out.print(word[i]+" ");
}
于 2018-03-07T04:29:12.897 回答