繁体   English   中英

Java ArrayIndexOutOfBound异常

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM