2013-03-14 24 views
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]); 
       } 



     } 
    }); 

如果我的代碼有問題,請隨時通知我。非常感謝你!

+0

很少有在建的方法以及圖書館複製數組的內容的內容。也許你可以嘗試使用它。請檢查收集框架,並在網上搜索庫。 – 2013-03-14 16:04:04

回答

0

您有循環之後的分號:

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]); 
} 
+0

非常感謝您指出這一點。也許這就是我得到錯誤的原因。你的答案是我需要的。謝謝。 – chArm 2013-03-14 16:13:51

1

只需使用:

oldArray = new String[5]; 

oldArray = null; 

所以老數組不會指向真的老了陣列,而是一個新的。

如果您知道要再次使用它,並且您知道陣列的長度,那麼第一個更好。另一個需要安全處理,因爲如果你訪問它可能會導致NPE。

+1

這並不能清除數組。如果其他對象具有對舊數組的引用,它仍會看到舊值。 – 2013-03-14 16:07:59

+0

你說得對。但據我所知,這是他想要的。 – BobTheBuilder 2013-03-14 16:10:06

0

我不知道什麼oldarrayOut和newarrayOut領域都在做,但它似乎是把

oldArray = null; 

外的for循環在你的onClick方法會做到這一點。

您似乎正在成功複製數組,只需在完成複製後就不初始化oldArray。

0
String[] newArray = (String[]) oldArray.clone(); 

數組的內容複製到另一個。 試試這個將oldArray複製到newArray。

Arrays.fill(oldArray, null); 

刪除舊的陣列

相關問題