-1

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

4 回答 4

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;
}
于 2013-10-23T20:53:43.640 回答
1

为 if 条件放置左大括号和右大括号。

于 2013-10-23T20:54:10.327 回答
0

以下行发生错误:

r[q] = w;

由于这超出了 if 块,因此 q 的值-1是导致错误的原因。

将其移动到 if 块中:

if (q >= 0){
  e[q] = w;
  r[q] = w;
}

干杯!!

于 2013-10-23T20:55:18.057 回答
0

q您使用带有 value的参数调用方法 Ext -1。然后您访问未定义的r[q] = w;-1 (在索引 0-4 上定义大小为 5 的数组)。

你为什么接受它?

if (q >= 0)
  e[q] = w;
  r[q] = w;

这意味着 if 语句仅针对 if 语句进行比较e[q] = w; 如果要让 if 语句涵盖所有代码,则需要添加大括号。如果 if 语句中没有大括号,则只有第一个任务连接到 if :

if (q >= 0){
  e[q] = w;
  r[q] = w;
}
于 2013-10-23T20:55:46.053 回答