【问题标题】:Invert chars inside string array反转字符串数组中的字符
【发布时间】:2013-12-11 17:49:58
【问题描述】:

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

【问题讨论】:

  • 使用new StringBuilder.reverse()

标签: java arrays string char


【解决方案1】:

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();
    }

【讨论】:

  • 谢谢,成功了!只是一件小事,它是array[i].charAt(k)。得到“java.lang.ArrayIndexOutOfBoundsException:12”并且无法弄清楚在哪里呵呵。谢谢!!
  • 好吧,那么你可以使用这个:b.setCharAt(j, b.charAt(k));
【解决方案2】:
array[i].charAt(j) = array[k].charAt(k); //ERROR HERE
  • array[i].charAt(a) 返回一个值而不是变量。您正在尝试将一个值分配给一个没有任何意义的值。
  • java String 是不可变的。你不能改变它。
  • 使用StringBuilder,它具有setCharAt(int index, char ch); 功能,这可能是您想要的。

【讨论】:

    【解决方案3】:

    最简单的方法是,用StringBuilder.reverse()方法反转字母。试试吧,

     for(String str : array){
       System.out.println(new StringBuilder(str).reverse());
     }
    

    【讨论】:

      【解决方案4】:

      只需在数组中的每个 String 上使用它:

      String reversed = new StringBuilder(stringFromArray).reverse().toString();
      

      【讨论】:

        【解决方案5】:

        试试new StringBuilder(array[i]).reverse().toString();

        【讨论】:

          【解决方案6】:

          您必须创建一个子字符串。

          array[i]= array[i].substring(0,j) + array[k].charAt(k) + array[i].substring(j+1);

          我相信这会进行所需的编辑

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2020-09-04
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2016-01-06
            相关资源
            最近更新 更多