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];

これはノープです。配列要素の値を、それが既に持っている値に設定します。

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

null の配列にアクセスしようとしているため、これは明らかに NullPointerException を引き起こします。配列を変更するには、配列を初期化する必要があります。

char[] lettersr1 = new char[someLength];

追加の注意: 変数にはより適切な名前を選択する必要があります。名前は、変数が何を表しているかを示す必要があり、Java の命名規則を尊重する必要があります (変数名にアンダースコアを使用しない、キャメルケース)。ctr_xctr_r1そしてlettersr1何も意味しません。

編集:

あなたが何をしたいのか、なぜ単純に を使用しないのかはまだわかりません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 に答える