2016-01-30 78 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的大小。

相关问题