【发布时间】:2020-04-08 12:32:23
【问题描述】:
我需要写一些东西来获得一个 MxN 2D 数组,遍历每一行并搜索数字 0。如果该行中存在数字零,则整行将设置为 0。
例如,这个:
int[][] arr ={{ 144, 2, 3, 2, 5, 0},
{2, 36, 1, 2, 1, 6},
{0, 0, 9, 0, 3, 5},
{4, 4, 4, 225, 3, 4},
{1, 1, 1, 1, 16, 1}};
会变成这样:
int[][] arr ={{ 0, 0, 0, 0, 0, 0},
{2, 36, 1, 2, 1, 6},
{0, 0, 0, 0, 0, 0},
{4, 4, 4, 225, 3, 4},
{1, 1, 1, 1, 16, 1}};
我没有取得太大进展。我将行设置为零的所有尝试要么不起作用,要么将数组中的所有内容都归零。
import java.util.Arrays;
public class TwoDarr {
public static void ZeroNum(int[][] arr) {
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
if (arr[i][j] == 0) {
???
}
}
}
}
public static void main(final String[] args) {
int[][] arr ={{ 144, 2, 3, 2, 5, 0},
{2, 36, 1, 2, 1, 6},
{0, 0, 9, 0, 3, 5},
{4, 4, 4, 225, 3, 4},
{1, 1, 1, 1, 16, 1}};
ZeroNum(arr);
for (int i = 0; i < arr.length; i++) {
System.out.println(Arrays.toString(arr[i]));
}
}
}
对此事的任何帮助都会很棒, 谢谢:)
【问题讨论】:
-
您到底尝试了什么?简单的
arr[i] = new int[arr[i].length]];应该可以工作 -
@UnholySheep 确实有效!我想这归结为我没有足够的基础知识。如何分解您发送到此处的代码行?
-
它只是将数组替换为一个新数组(长度相同),
int的默认值为 0。或者您可以考虑使用Arrays.fill:docs.oracle.com/javase/7/docs/api/java/util/… -
@UnholySheep 如果您能回答帖子,我很乐意将其标记为已解决,我实际上只是在 if 之后的嵌套循环中添加了您的代码行。非常感激!谢谢:)