簡體   English   中英

如何使用java增強循環填充二維數組?

[英]How to fill two-dimensional array using java enhanced loop?

基本上,我正在嘗試這個,但這只留下填充zeros數組。 我知道如何填充正常的for循環,如

for (int i = 0; i < array.length; i++)

但為什么我的變體不起作用? 任何幫助,將不勝感激。

char[][] array = new char[x][y];
for (char[] row : array)
    for (char element : row)
        element = '~';

Thirler解釋了為什么這不起作用。 但是,您可以使用Arrays.fill來幫助您初始化數組:

    char[][] array = new char[10][10];
    for (char[] row : array)
        Arrays.fill(row, '~');

來自Sun Java Docs

那么什么時候應該使用for-each循環?

任何時候你都可以。 它真的美化了你的代碼。 不幸的是,你無法在任何地方使用它。 例如,考慮一下expurgate方法。 程序需要訪問迭代器才能刪除當前元素。 for-each循環隱藏了迭代器,因此您無法調用remove。 因此,for-each循環不可用於過濾。 類似地,它不適用於需要在遍歷時替換列表或數組中的元素的循環

這是因為element char不是指向數組內存位置的指針,它是字符的副本,因此更改它只會更改副本。 因此,在引用數組和對象(非簡單類型)時,您只能使用此表單。

賦值僅改變局部變量element

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM