0

ボタンがクリックされた後、配列の内容を別の配列にコピーしようとしています。newArrayにコピーした後、oldArrayから前のデータを削除したいと思います。私はこのコードを持っていて、迷子になっています。誰かがこれを行う方法を教えてもらえますか?これが私がこれまでに持っているものです。

    final String [] oldArray;

    oldArray = new String[5];
    oldArray[0] = "c";
    oldArray[1] = "h";
    oldArray[2] = "a";
    oldArray[3] = "r";
    oldArray[4] = "m";

    for (i = 0; i < 5; i++);

        {
            oldarrayOut.setText(oldArray[i]);
        }

    bOk.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub



            String[] newArray = new String[5];

            for (i = 0; i < 5; i++);
                {
                    newArray[i] = oldArray[i];
                    newarrayOut.setText(newArray[i]);
                }



        }
    });

コードに問題がある場合も、遠慮なくお知らせください。どうもありがとうございます!

4

4 に答える 4

1

使用するだけです:

oldArray = new String[5];

また

oldArray = null;

したがって、古い配列は本当に古い配列を指すのではなく、新しい配列を指します。

最初のものは、もう一度使用することがわかっていて、配列の長さがわかっている場合に適しています。もう1つは、アクセスするとNPEが発生する可能性があるため、安全に扱う必要があります。

于 2013-03-14T16:02:54.773 に答える
0

oldarrayOutフィールドとnewarrayOutフィールドが何をしているのかわかりませんが、

oldArray = null;

onClickメソッドのforループの外側でそれを行います。

コピーが完了したらoldArrayを初期化するのではなく、配列を正常にコピーしているようです。

于 2013-03-14T16:05:47.953 に答える
0

forループの後にセミコロンがあります。

for (i = 0; i < 5; i++);
                       ^-- here

これは、forループを各反復で何もしないループに変換します。それを除く。

古い配列をクリアするには、単に使用します

for (i = 0; i < 5; i++) {
    newArray[i] = oldArray[i];
    oldArray[i] = null;
    newarrayOut.setText(newArray[i]);
}
于 2013-03-14T16:06:38.483 に答える
0
String[] newArray = (String[]) oldArray.clone();

配列の内容を別の配列にコピーします。これを試して、oldArrayをnewArrayにコピーします。

Arrays.fill( oldArray, null );

古いアレイの内容を削除する

于 2013-03-14T16:06:41.283 に答える