在二维数组中使用for循环打印出不同行和列的值。

问题描述 投票:0回答:2

我有一个二维数组,第一行是名,第二行是姓。

String[][] ladrones2 = {{"Phil", "Kim", "Phil", "Perry"}, {"Garcia", "Gimena", "Basinger", "Ornitorrinco"}};

最理想的结果是让它们打印出来,比如说:"我的名字是什么?

Phill Garcia
Kim Gimena
etc...

现在,我可以通过捕获ArrayIndexOutOfBoundsException异常来实现这个功能,它的工作和输出是。

name Phil Garcia
name Kim Gimena
name Phil Basinger
name Perry Ornitorrinco

这很好,但我想知道是否有一种方法可以做到这一点而不需要捕获异常?我一直在搜索让这个更干净,但没能做到。

目前的代码。

    public static void robo2() {
        String[][] ladrones2 = {{"Phil", "Kim", "Phil", "Perry"}, {"Garcia", "Gimena", "Basinger", "Ornitorrinco"}};

        try {
            for (int i = 0; i < ladrones2.length; i++) {
                for (int j = 0; j < ladrones2[i].length; j++) {
                    System.out.println("name: " + ladrones2[i][j] + " " + ladrones2[i + 1][j]);
                }
            }
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("");
        }

    }

如你所见,我在内部的for循环中使用了一个+1的i变量,这又引发了异常。

有什么好办法吗?由于是Java新手,我想目前只用2个for循环来保持这种工作方式。

谢谢你

java for-loop multidimensional-array
2个回答
1
投票

如果你确定'ladrones2'数组总是有2行,那么下面的代码会更简单一些

public static void main(String[] args) {
    String[][] ladrones2 = { { "Phil", "Kim", "Phil", "Perry" }, { "Garcia", "Gimena", "Basinger", "Ornitorrinco" } };

    for (int i = 0; i < ladrones2[0].length; i++) {
        System.out.println("name: " + ladrones2[0][i] + " " + ladrones2[1][i]);
    }
}

1
投票

在这一行:

System.out.println("name: " + ladrones2[i][j] + " " + ladrones2[i + 1][j]);

你同时从第一个和第二个数组中提取一个元素,但是你在这一行循环了序列中的所有元素。

for (int i = 0; i < ladrones2.length; i++) 

要纠正这个问题,你只需要减少这个数组中的 iladrones.length-1否则你会到达数组的末端,并试图访问下一个不存在的元素。

你最终会得到这行代码。

for (int i = 0; i < ladrones2.length-1; i++) {
© www.soinside.com 2019 - 2024. All rights reserved.