0

单击按钮后,我试图将数组的内容复制到另一个数组。我希望 oldArray 在复制到 newArray 后清除以前的数据。我有这个代码,我迷路了。谁能指导我如何做到这一点?这是我到目前为止所拥有的。

    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;

所以旧数组不会指向真正的旧数组,而是指向一个新数组。

如果您知道要再次使用它,并且知道数组的长度,第一个会更好。另一个需要安全处理,因为如果您访问它可能会导致 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 回答