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,我想反转字符串中的单词。我试着这样实现它: public String reverseWords(String str) { String reverse = ""; String[] arr = str.split(" "); for (int i = arr.length; i < 0; i++) { reverse+=arr[i]; } return reverse; } publicstringreversee

我想反转字符串中的单词。我试着这样实现它:

public String reverseWords(String str) {
    String reverse = "";
    String[] arr = str.split(" ");
    for (int i = arr.length; i < 0; i++) {
        reverse+=arr[i];
    }       
    return reverse;
}
publicstringreverseewords(stringstr){
字符串反向=”;
字符串[]arr=str.split(“”);
对于(int i=arr.length;i<0;i++){
反向+=arr[i];
}       
反向返回;
}

然而,这并没有给我任何回报?有什么建议我做错了什么吗?

您必须使循环向后迭代。使用
--
,您不需要从
0到长度
,而是从
length
1
。这是手动换向功能的主要逻辑

试试这个:

public static String reverseWords(String str) {
    StringBuilder sb = new StringBuilder(str.length() + 1);
    String[] words = str.split(" ");
    for (int i = words.length - 1; i >= 0; i--) {
        sb.append(words[i]).append(' ');
    }
    sb.setLength(sb.length() - 1);  // Strip trailing space
    return sb.toString();
}
你有:
for(int i=arr.length;i<0;i++){

如果是长度,我将始终大于或等于0。
试试这个:
对于(int i=arr.length;i>0;i--){
尝试
i=0
arr.length
i--
i>=0

或者更详细地说:

你想要

for (int i=arr.length-1 ; i>=0 ;i--)

如果要使用循环

第1版:

public String reverseWords(String str) {
    String reverse = "";
    for (int i = str.length()-1; i >= 0; i--) {
        reverse+=str.charAt(i);
    }       
    return reverse;
}
第2版:

 public String reverseWords(String str) {
StringBuilder sb = new StringBuilder(str.length()+1);
        for (int i = str.length()-1; i >= 0; i--) {
            sb.append(str.charAt(i));
        }       
        return sb.toString();
    }

如果字符串长度很大,而且如果您处于多线程环境中,建议使用StringBuffer而不是StringBuilder

public  String reverseWords(String str) {
          return new StringBuffer(str).reverse().toString();
       }

我给出了在java中使用charArray反转字符串ie的另一个选项。 1.使用函数将所有字符串复制到char数组
2.只需按相反顺序打印字符。

您从最大的索引开始,您希望它是负数(而且永远不会是负数),更不用说您正在增加索引。我是否需要添加更多的索引来计算它?