2016-08-09 4 views
-1

Welcher Ausnahmetyp tritt in diesem Code auf?
Warum die Catch-Anweisung nicht nimmt ArrayOutofBoundsException e.ArrayOutofBoundsException e

import java.io.*; 
import java.util.*; 
import java.text.*; 
import java.math.*; 
import java.util.regex.*; 

public class Solution { 

public static void main(String[] args) { 
    int i,j,k,n,m,l,x,y; 

    Scanner sc=new Scanner (System.in); 
    n=sc.nextInt(); 
    ArrayList [] a=new ArrayList[n]; 
    for(i=0;i<n;i++) 
     { 
     m=sc.nextInt(); 
     a[i]=new ArrayList(); 
     for(j=0;j<m;j++) 
     { 
      a[i].add(sc.nextInt()); 
     } 
    } 
    k=sc.nextInt(); 
    for(i=0;i<k;i++) 
     { 
     x=sc.nextInt(); 
     y=sc.nextInt(); 
     try 
      { 
      System.out.println(a[x-1].get(y-1)); 
     } 
     catch(ArrayOutofBoundsException e) 
      { 
      System.out.println("ERROR!"); 
     } 
    } 

    } 
} 
+0

Welche Linie ist die Ausnahme? – mcalex

+0

überprüfen Sie es richtig ... es fängt die Ausnahme. – Subhankar

Antwort

2

Da Sie Array von Arraylist in Ihrem Programm verwenden,

aus dem Java-doc ein ArrayList ‚s get-Methode

Wirft: IndexOutOfBoundsException - wenn der Index außerhalb des zulässigen Bereichs (Index < 0 || index> = size())

und

Alle Array-Zugriffe werden zur Laufzeit überprüft; Wenn versucht wird, einen Index zu verwenden, der weniger als null oder größer als oder gleich der Länge des Arrays ist, wird eine ArrayIndexOutOfBoundsException ausgelöst.

So versuchen Sie IndexOutOfBoundsException in Ihrem Programm zusammen mit ArrayIndexOutOfBoundsException zu fangen.

Ex:

try { 
    System.out.println(a[x - 1].get(y - 1)); 
} catch (ArrayIndexOutOfBoundsException e) { 
    System.out.println("ERROR!"); 
} catch (IndexOutOfBoundsException e) { 
    System.out.println("ERROR! IndexOutOfBoundsException "); 
} 
+0

danke für deinen Vorschlag –

Verwandte Themen