我有一个二维数组,第一行是名,第二行是姓。
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循环来保持这种工作方式。
谢谢你
如果你确定'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]);
}
}
在这一行:
System.out.println("name: " + ladrones2[i][j] + " " + ladrones2[i + 1][j]);
你同时从第一个和第二个数组中提取一个元素,但是你在这一行循环了序列中的所有元素。
for (int i = 0; i < ladrones2.length; i++)
要纠正这个问题,你只需要减少这个数组中的 i
到 ladrones.length-1
否则你会到达数组的末端,并试图访问下一个不存在的元素。
你最终会得到这行代码。
for (int i = 0; i < ladrones2.length-1; i++) {