在字符串数组中反转字符

时间:2013-12-11 17:49:59

标签: java arrays string char

我正在处理其他一些方法,我不知道如何处理这个方法。我想更改数组中字符串的顺序(不是字符串* 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"}

6 个答案:

答案 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)返回的值不是变量。您正在尝试将值分配给没有任何意义的值。
  • java 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);

这将做必要的编辑我相信