[英]Java ArrayIndexOutOfBound Exception
我正在尝试运行此代码,并且不断收到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
你的问题是,如果没有括号,则if
仅适用于以下语句:
if (q >= 0)
e[q] = w;
r[q] = w; // <---- here you get ArrayIndexOutOfBound Exception
添加大括号,例如:
if (q >= 0){
e[q] = w;
r[q] = w;
}
将开括号和闭括号放在if条件下。
在以下行中发生错误:
r [q] = w;
由于此if块之外,q的值为-1
,这导致了错误。
将其移入if块:
if (q >= 0){
e[q] = w;
r[q] = w;
}
干杯!
您用值-1
参数q
调用方法Ext。 然后添加r[q] = w;
-1(未定义)(大小为5的数组在索引0-4上定义)。
你为什么要这么做?
if (q >= 0)
e[q] = w;
r[q] = w;
这意味着仅对e[q] = w;
比较if语句e[q] = w;
如果要使所有代码都被if语句覆盖,则需要添加花括号。 如果if语句中没有大括号,则如果满足以下条件,则仅第一个任务与之连接:
if (q >= 0){
e[q] = w;
r[q] = w;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.