基本上,我正在尝试这个,但这只留下填充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 = '~';
答案 0 :(得分:13)
Thirler解释了为什么这不起作用。但是,您可以使用Arrays.fill
来帮助您初始化数组:
char[][] array = new char[10][10];
for (char[] row : array)
Arrays.fill(row, '~');
答案 1 :(得分:7)
那么什么时候应该使用for-each循环?
任何时候你都可以。它真的美化了你的代码。不幸的是, 无法 在任何地方使用它。例如,考虑一下expurgate方法。程序需要访问迭代器才能删除当前元素。 for-each循环隐藏了迭代器,因此您无法调用remove。因此,for-each循环不可用于过滤。 同样,它不适用于需要在遍历时替换列表或数组中的元素的循环 。
答案 2 :(得分:4)
这是因为element
char不是指向数组内存位置的指针,它是字符的副本,因此更改它只会更改副本。因此,在引用数组和对象(非简单类型)时,您只能使用此表单。
答案 3 :(得分:0)
该作业仅改变局部变量element
。