Java 调用反向方法
问题:我希望调用reve方法,结果应该是“edcba”。但真正的结果是“abcde”。reve方法不起作用。有什么解决办法吗?非常感谢Java 调用反向方法,java,Java,问题:我希望调用reve方法,结果应该是“edcba”。但真正的结果是“abcde”。reve方法不起作用。有什么解决办法吗?非常感谢 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Reverse { public static void main (String args[]) throws IOExcepti
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Reverse {
public static void main (String args[]) throws IOException
{
System.out.println(reve("abcde"));
}
// to reverse a string
public static String reve(String sentence) {
StringBuilder sb = new StringBuilder(sentence.length() + 1);
String[] words = sentence.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();
}
}
split
在这里对您没有帮助,因为字符之间没有空格
String[] words = sentence.split(" ");
使用
因此,您可以从字符串
中获取字符,然后使用循环来反转字符串
,因为我认为您这样做是正确的,但对于字符数组则相反
或者您也可以使用charAt(inti)
方法
for (i = sentence.length()-1; i >= 0; i--)
sb.append(sentence.charAt(i));
return sb.toString();
注意:
在这里,您可以直接使用StringBuilder
或StringBuffer
System.out.println(new StringBuilder(stringVar).reverse().toString());
System.out.println(new StringBuffer(stringVar).reverse().toString());
因为您正在空间上拆分字符串。由于
“abcde”
没有空格,split
只提供一个包含一个元素的数组(“abcde”
),并将其附加到StringBuilder
)
因为您已经在使用StringBuilder
,所以只需执行以下操作即可
public static String reve(String sentence) {
return new StringBuilder(sentence).reverse().toString();
}
你在太空中分裂。由于字符串“abcde”
不包含任何空格,因此它只返回一个元素(整个字符串)
一个简单的解决方案是一分为二,这样你就可以把每个字母分开:
String[] words = sentence.split("");
但最推荐的解决方案是将字符串转换为char
数组,因为在这种情况下,将字符存储在string
数组中没有意义,因为每个字符串只有一个字符:
char[] letters = sentence.toCharArray();
应该可以正常工作(使用字符数组):
您是否从main调用了reve方法?)您希望从“foo bar”得到什么输出?“乌龟”还是“乌龟”?
char[] letters = sentence.toCharArray();
public static String reve(String sentence) {
char[] characters = sentence.toCharArray();
int i = 0;
int j = sentence.length()-1;
while(j > i) {
char temp = characters[i];
characters[i] = characters[j];
characters[j] = temp;
i++;j--;
}
return new String(characters);
}