遍历具有多个null值的现有数组,并用特定的String填充非null值



所以我的问题是这里有这个方法:

public static String[][][][] inflate(String[][][][] f) {
for (int i = 0; i <= f.length; i++) {
for (int j = 0; j <= f[i].length; j++) {
for (int k = 0; k <= f[i][j].length; k++) {
for (int l = 0; l <= f[i][j][k].length; l++) {
if (f[i][j][k][l] != null) {
f[i][j][k][l] = "/" + (l) + "|" + (k) + "|" + (j) + "|" + (i) + "\";
}
}
}
}
}
return f;
}

正如标题所说,给定了一个名为f的4维字符串数组,其中已经有一些null值。现在我想遍历这个数组,我总是检查对象是否为null,如果不是,我想用给定的String填充它。但我在这里的问题是,我得到了一个NullPointerException,因为在某个时候,我的方法有k = 3,因为我的数组的长度也计入空值。这将导致此异常,因为带有k = 3f[i][j][k][l]根本不存在。那么,我该如何处理想要迭代它的问题,但同时我觉得我不能使用f.length作为终止条件。

如果需要的话,我可以提供更多的信息,但我认为这应该足以了解情况。

您应该检查nonNull是否在每个嵌套级别。类似这样的东西:

IntStream.range(0, f.length)
.filter(i -> Objects.nonNull(f[i]))
.forEach(i -> IntStream.range(0, f[i].length)
.filter(j -> Objects.nonNull(f[i][j]))
.forEach(j -> IntStream.range(0, f[i][j].length)
.filter(k -> Objects.nonNull(f[i][j][k]))
.forEach(k -> IntStream.range(0, f[i][j][k].length)
.filter(l -> Objects.nonNull(f[i][j][k][l]))
.forEach(l -> f[i][j][k][l] =
"/" + (l) + "|" + (k) + "|" + (j) + "|" + (i) + "\"))));

相关内容

  • 没有找到相关文章

最新更新