我设法反转一个String,使它成为一个char数组,同时在Stringbuilder上使用.reverse方法,设法用另一个String和一个for循环(我认为这不是一个好主意,因为它会受伤)性能),但我无法弄清楚如何使用Stringbuilder和for循环来反转字符串。 它给了我错误 - "左侧必须是变量" 。还试图为Stringbuilder设置一个长度,但看起来我错过了一些东西。我试图在Stringbuilder的括号外设置索引,因为它们用于参数,但我只是猜测如何做,尝试.append。
public class Task1 {
public static void main(String[] args) {
String str = "Reverse me";
StringBuilder printStr = new StringBuilder();
int j = 0;
for (int i = str.length()-1; i > 0; i--) {
printstr(j) = str[i];
}
}
}
答案 0 :(得分:3)
我认为你是在正确的方面,只是我改变的一些事情:首先,我们能够指定StringBuilder
的长度,因为我们知道它的长度是相同的正如String
我们正在逆转。
没有必要遍历整个数组,只需要一半的数组就可以执行基本上只是切换字符的操作。所以最右边的角色现在是最左边的角色,这节省了一些计算。
public static void main(String[] args) throws IOException {
String str = "Reverse me";
StringBuilder printStr = new StringBuilder();
printStr.setLength(str.length());
for(int i =0; i<str.length()/2;i++){
char left = str.charAt(i);
final int fromRight = str.length() - i - 1;
printStr.insert(i, str.charAt(fromRight));
printStr.insert(fromRight, left);
}
}
以下是角色切换基本上如何工作的直观表示:可以找到更多信息here
答案 1 :(得分:1)
好的,所以你犯了多个错误,你试图通过使用括号来访问索引,你没有迭代整个字符串,因为你的循环条件是i&gt; 0,它应该是i&gt; = 0,你的循环是错误的(忽略括号),你可以结合append()和charAt()方法来做你需要的:
for (int i = str.length()-1; i >= 0; i--) {
printStr.append(str.charAt(i));
}
我们从你的字符串的最后一个索引到索引0,所以我们从字符串的结尾开始,然后我们将每个字符附加到我们的StringBuilder。最后你有反向的字符串。
答案 2 :(得分:0)
public class HelloWorld {
public static void main(String[] args) {
System.out.println(reverseString("Example"));
}
public static String reverseString(String str) {
StringBuilder builder = new StringBuilder();
for (int i = str.length() - 1; i >= 0; i--) {
builder.append(str.charAt(i));
}
return builder.toString();
}
}