Java ArrayIndexOutOfBound异常

时间:2013-10-23 20:52:31

标签: java arrays

我正在尝试运行此代码,并且我不断收到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

4 个答案:

答案 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;
}