簡體   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