我正在尝试运行此代码,并且我不断收到ArrayIndexOutOfBound
异常错误。
public class Heisenberg {
public static void main(String[] args) {
int[] array1 = new int[5];
int[] array2 = new int[5];
Ext(-1, 10, array1, array2);
}
public static void Ext(int q, int w, int[] e, int[] r) {
if (q >= 0)
e[q] = w;
r[q] = w;
}
}
我对数组有点新意,所以感谢所有帮助。enter code here
答案 0 :(得分:7)
您的问题是,没有大括号,if
仅将 应用于以下语句:
if (q >= 0)
e[q] = w;
r[q] = w; // <---- here you get ArrayIndexOutOfBound Exception
添加大括号,如:
if (q >= 0){
e[q] = w;
r[q] = w;
}
答案 1 :(得分:1)
为if条件设置开始和结束括号。
答案 2 :(得分:0)
错误发生在以下行:
r [q] = w;
由于if块之外,q的值为-1
,导致错误。
将其移至if block:
if (q >= 0){
e[q] = w;
r[q] = w;
}
干杯!!
答案 3 :(得分:0)
使用值为q
的参数-1
调用方法Ext。然后使用-1(未定义)访问r[q] = w;
(在索引0-4上定义大小为5的数组)。
为什么要访问它?
if (q >= 0)
e[q] = w;
r[q] = w;
这意味着仅比较e[q] = w;
的if语句
如果要将所有代码都包含在if语句中,则需要添加大括号。如果if语句中没有大括号,则只有第一个任务连接到if:
if (q >= 0){
e[q] = w;
r[q] = w;
}