Android - 将char数组值移动到相同的char数组

时间:2013-01-03 21:19:10

标签: android arrays eclipse porter-stemmer

我如何将char数组的值移动到同一个char数组?这是一个代码:

假设ctr_r1 = 1,

for(int ctr_x = (ctr_r1 + 2) ; ctr_x < letters.length - 2 ; ctr_x++)
 {
  letters[ctr_x] = letters[ctr_x];
 }

sb.append(letters);
char[] lettersr1 = sb.toString().toCharArray();
sb1.append(lettersr1);

追加&#34;字母&#34;,然后将其转换为字符串,然后将其转换为字符数组,然后将其设为&#34; lettersr1&#34;值。

我试图完成的是给出了EUCHARIST这个词,我需要取出HARIST这个词并将它放在另一个数组上并称之为区域1(Porter2词干算法)。

代码&#34; ctr_X =(ctr_r1 + 2)&#34;从H开始直到T.问题是我无法直接传递值,这就是为什么我试图更新现有的char数组然后追加它。

我试过这样做:

char[] lettersr1 = null;
for(int ctr_x = (ctr_r1 + 2) ; ctr_x < letters.length - 2 ; ctr_x++)
 {
   lettersr1[ctr_x] = letters[ctr_x];
 }

sb.append(lettersr1);

但是当我这样做时我的应用程序崩溃了。请帮忙。谢谢!

1 个答案:

答案 0 :(得分:2)

我不明白你要做什么,但我可以对你的代码发表评论:

letters[ctr_x] = letters[ctr_x];

这是一个noop:它将数组元素值设置为它已有的值。

char[] lettersr1 = null;
for(int ctr_x = (ctr_r1 + 2) ; ctr_x < letters.length - 2 ; ctr_x++) {
    lettersr1[ctr_x] = letters[ctr_x];

这显然会导致NullPointerException,因为您正在尝试访问一个null的数组。您必须先初始化数组才能修改它:

char[] lettersr1 = new char[someLength];

附加说明:您应该为变量选择更好的名称。名称应该告诉变量代表什么,并且它们应该遵守Java命名约定(变量名称中没有下划线,camelCase)。 ctr_xctr_r1lettersr1并不意味着什么。

编辑:

我仍然不确定你想做什么,以及你为什么不简单地使用substring(),但这里是如何将EUCHARIST转换为HARIST:

    char[] eucharist = "EUCHARIST".toCharArray();
    char[] harist = new char[6];
    System.arraycopy(eucharist, 3, harist, 0, 6);
    String haristAsString = new String(harist);
    System.out.println(haristAsString);

    // or

    char[] harist2 = new char[6];
    for (int i = 0; i < 6; i++) {
        harist2[i] = eucharist[i + 3];
    }
    String harist2AsString = new String(harist2);
    System.out.println(harist2AsString);

    // or

    String harist3AsString = "EUCHARIST".substring(3);
    char[] harist3 = harist3AsString.toCharArray();
    System.out.println(harist3AsString);