我想要反转字符串中的单词。我试着像那样实现它:
public String reverseWords(String str) {
String reverse = "";
String[] arr = str.split(" ");
for (int i = arr.length; i < 0; i++) {
reverse+=arr[i];
}
return reverse;
}
然而,这不会给我任何回报?我有什么建议吗?
答案 0 :(得分:3)
你必须向后循环迭代。使用--
并且您不需要从0 to length
开始,而是从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();
}
答案 1 :(得分:3)
尝试i=0
到arr.length
或i--
和i>=0
。
或者更详细一点:
你想要
for (int i=arr.length-1 ; i>=0 ;i--)
答案 2 :(得分:2)
你有:
for (int i = arr.length; i < 0; i++) {
如果是长度,我将总是大于或等于0
试试这个:
for (int i = arr.length; i > 0; i--) {
答案 3 :(得分:2)
如果你想使用循环。
版本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();
}
答案 4 :(得分:1)
如果字符串具有很大的长度,而且如果你处于多线程环境中,建议使用StringBuffer而不是StringBuilder。
public String reverseWords(String str) {
return new StringBuffer(str).reverse().toString();
}
答案 5 :(得分:0)
我给出了另一个反转字符串的选项,即在java中使用charArray。 1.使用函数将所有字符串复制到char数组 2.只需按相反的顺序打印字符。