我正在处理其他一些方法,我不知道如何处理这个方法。我想更改数组中字符串的顺序(不是字符串* s *的顺序),但不接受此操作。有什么想法吗?
public void invert() {
for(int i = 0; i < array.length; i++){
for(int j = 0, k = array[i].length() - 1; j < k; j++, k--){
char a = array[i].charAt(j);
array[i].charAt(j) = array[k].charAt(k); //ERROR HERE
array[i].charAt(k) = a; //AND HERE
}
}
}
编辑:我会离开这里,我的意思。
我有一个数组= {"Hello", "Goodbye"}
我想将其更改为{"olleH", "eybdooG"}
答案 0 :(得分:4)
Java字符串是不可变的。你无法改变它们。
(但你可以将字符串转换为StringBuilder - http://docs.oracle.com/javase/tutorial/java/data/buffers.html - 这本质上是一个可变字符串,更改字符,然后将StrignBuilder转换回String。)
试试这段代码(我没有测试过,但我希望它有效):
for(int i = 0; i < array.length; i++) {
StringBuilder b = new StringBuilder(array[i]);
for(int j = 0, k = b.length() - 1; j < k; j++, k--){
char a = b.charAt(j);
b.setCharAt(j, array[k].charAt(k));
b.setCharAt(k, a);
}
array[i] = b.toString();
}
答案 1 :(得分:2)
array[i].charAt(j) = array[k].charAt(k); //ERROR HERE
array[i].charAt(a)
返回的值不是变量。您正在尝试将值分配给没有任何意义的值。 String
是不可变的。你无法改变它。 setCharAt(int index,
char ch);
功能的StringBuilder
,这是您可能想要的功能。答案 2 :(得分:0)
尝试new StringBuilder(array[i]).reverse().toString();
答案 3 :(得分:0)
最简单的方法是用StringBuilder.reverse()方法反转字母。尝试,
for(String str : array){
System.out.println(new StringBuilder(str).reverse());
}
答案 4 :(得分:0)
只需在数组中的每个String
上使用它:
String reversed = new StringBuilder(stringFromArray).reverse().toString();
答案 5 :(得分:-1)
你必须创建一个子字符串。
array [i] = array [i] .substring(0,j)+ array [k] .charAt(k)+ array [i] .substring(j + 1);
这将做必要的编辑我相信