繁体   English   中英

如何在Java中迭代MultiDimensional Array?

[英]How to iterate over MultiDimensional Array in Java?

我是编码的新手,我正在尝试理解Java中的多维数组。

这是我的代码:

String twoD[][] = new String[2][2];

twoD[0][0] = "Hi";

twoD[1][0] = "Hi";
twoD[1][1] = "What's";

twoD[2][0] = "Hi";
twoD[2][1] = "What's";
twoD[2][2] = "Up?";

for (int row = 0; row < twoD.length; row++ ){
    for(int col = 0; col < twoD[row].length; col++){
        System.out.println(twoD[row][col] + "\t");
    }
    System.out.println();
}

我正在尝试打印以下输出:

你好

嗨,什么

你好,怎么了?

我用过教程来打印这个:

嗨null null

嗨什么是空的

嗨什么事了?

如何防止它打印null? 谢谢。

我想你想创建一个锯齿状的数组,你可以这样做

String[][] twoD = { { "Hi" }, { "Hi", "What's" }, { "Hi", "What's", "Up" } };

然后你可能想在你的循环中print (而不是println

for (int row = 0; row < twoD.length; row++) {
    for (int col = 0; col < twoD[row].length; col++) {
        System.out.print(twoD[row][col] + " ");
    }
    System.out.println();
}

或者,使用现有代码,您可以在print之前添加null检查

 if (twoD[row][col] != null) {
     // ...
 }

另一种答案是使用顺序流。

    String twoD[][] = new String[3][3]; // not [2][2]

    twoD[0][0] = "Hi";

    twoD[1][0] = "Hi";
    twoD[1][1] = "What's";

    twoD[2][0] = "Hi";
    twoD[2][1] = "What's";
    twoD[2][2] = "Up?";

    System.out.println(Arrays.stream(twoD)
        .map(oneD -> Arrays.stream(oneD)
            .filter(Objects::nonNull)
            .collect(Collectors.joining(" ")))
        .collect(Collectors.joining("\n")));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM