0

我如何将 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);

附加“字母”,然后将其转换为字符串,然后将其转换为 char 数组,然后将其设为“lettersr1”值。

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

代码“ctr_X = (ctr_r1 + 2)”从 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);

但是当我这样做时,我的应用程序崩溃了。请提供任何帮助。谢谢!

4

2 回答 2

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,因为您试图访问一个为空的数组。您必须先初始化数组,然后才能对其进行修改:

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);
于 2013-01-03T21:26:43.170 回答
1

可能是这样:

String str = "EUCHARIST";
str = str.substring(3);

在 toCharArray() 或其他之后

于 2013-01-03T21:43:44.800 回答