【问题标题】:Using foreach to fill a 2D array Java使用 foreach 填充二维数组 Java
【发布时间】:2019-10-11 22:01:06
【问题描述】:

所以我尝试使用两个 foreach 循环来遍历二维字符串数组,并将所有值设置为默认字符串。但是,我必须捏造 foreach 语法。我已经尝试了两种方法,但都不起作用。我应该放弃并只使用常规的 for 循环吗?

import java.util.ArrayList;
public class Test{
String[][] table;
table = new String[11][6];
for(String[] x:table) {
for(String z:x) {
z="asd";}}
}

所以此时的问题是 java 只是重新定义循环变量而不触及实际的数组。所以我试着把它放到第二个循环中:

table[x][z]="asd";

这不起作用,因为它们都没有指向 int。所以我想我的问题是: 有没有办法使用 foreach 循环本身的循环变量将 java 指向它当前在 foreach 循环中的索引?我是否使用 getIndex() 之类的东西?还是我必须在每个循环中添加一个 int 变量并 ++ 它才能拥有索引?

【问题讨论】:

  • 类名是什么?请把整个代码。
  • ok,现在开始编辑
  • 您不能使用 foreach lop 写入数组。 foreach 循环用于获取数组中的值。使用传统的 for 循环。
  • 你也不能将任意代码直接放在一个类中。它必须在方法或构造函数或 init 块中。
  • 对,它在完整类的构造函数中。我拿出来了

标签: java arrays iteration


【解决方案1】:

foreach 返回只读值,这就是第一种方法行不通的原因。 您可以使用 for 代替 foreach。

for(int i = 0; i < table.length; i++) {
    for(int j==0; j<table[i].length; j++) {
        table[i][j]="asd";
    }

}

如果要使用foreach,可以单独保留索引。我不明白你为什么会这样做。

int i=0;
int j;
for(String[] x:table) {
    j=0;
    for(String z:x) {
       table[i][j]="asd";
       j++;
    }
    i++;
}

【讨论】:

  • 谢谢。我不知道 foreach 有这个限制。这样就解决了问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-05
  • 1970-01-01
  • 2017-04-17
  • 1970-01-01
  • 2019-02-01
  • 2016-05-27
相关资源
最近更新 更多