通过创建Bar.Class
的cmd行编译此代码import java.util.Map;
import java.util.HashMap;
public class Bar {
private static final String[][] pos =
new String[][] {{"X0","Y0"},{"X1","Y1"},{"X2","Y2"}};
public Bar() {}
public static String getAtPosition(int x, int y) {
return pos[x][y];
}
public static void main(String[] args) {
Bar bar = new Bar();
try {
for (int x = 0; x < pos.length; x++) {
for (int y = 0; y < pos.length; y++) {
System.out.println(bar.getAtPosition(x,y));
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}
输入 java Bar
时出现以下错误X0
Y0
java.lang.ArrayIndexOutOfBoundsException: 2
at Bar.getAtPosition<Bar.java:12>
at Bar.main<Bar.java:23>
此代码由我接受采访的公司提供,他们需要在运行时解释每个源代码行和程序结果的注释。
任何帮助都会受到赞赏,我只学了几天java,今天我花了好几个小时。
答案 0 :(得分:0)
内部数组没有pos.length
个元素。它有pos[0].length
个元素。
尝试:
for (int x = 0; x < pos.length; x++) {
for (int y = 0; y < pos[0].length; y++) {
System.out.println(bar.getAtPosition(x,y));
}
}
也就是说,为了访问私有静态数组的元素,然后直接访问私有数组以找到其范围,使用方法getAtPosition
没有多大意义。您可以传递给该方法的数组索引。
答案 1 :(得分:0)
替换下面的
for (int y = 0; y < pos.length; y++)
使用此声明
for (int y = 0; y < pos[x].length; y++)
<强>输出强>
X0
Y0
X1
Y1
X2
Y2