2016-01-30 92 views
0

我收到錯誤信息,如果我執行下面的程序。它說o無法解析爲變量。以下Java程序的輸出是什麼?爲什麼我得到錯誤

public class Test { 

    /** 
* @param args 
*/ 
    public static void main(String[] args) { 

     try{ 
      int o[] = new int[2]; 
      o[3]=23; 
      o[1]=33; 
     }catch(Exception e){ 
      System.out.println(e.getMessage()); 
      e.printStackTrace(); 
     } 

     System.out.println(o[1]); //THis line shows the error. 
    } 

} 

爲什麼我會收到該行System.out.println(o[1]);

+0

看的,如通過印刷你的'catch'塊。 –

回答

0

您的INT O的scope僅限於try-catch塊。將其移動到try-catch區塊外部,以便在sysout()中訪問它。

public static void main(String[] args) { 
    /* Moved Outside */ 
    int o[] = new int[4]; 

     try{ 
      o[3] = 23; 
      o[1] = 33; 
     }catch(Exception e){ 
      System.out.println(e.getMessage()); 
      e.printStackTrace(); 
     } 

     /* o will be visible now */ 
     System.out.println(o[1]); 
    } 

此外,爲了o[3] = 23;要被執行,則必須在原始的錯誤,以增加陣列的尺寸爲最小4.

1

首先,您在try-block中初始化o,所以o在其外部不可見。改變這個和調用o [3]將給出一個ArrayIndexOutOfBounds,因爲o只有2的大小。

相關問題