ArrayOutofBoundsException e

时间:2016-08-09 04:55:44

标签: java

此代码中发生了哪种类型的异常 为什么catch语句没有采用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!");
        }
    }

  }
}

1 个答案:

答案 0 :(得分:2)

由于您在程序中使用Array of ArrayList,

从java doc ArrayList获取方法

  

抛出:       IndexOutOfBoundsException - 如果索引超出范围(索引&lt; 0 || index&gt; = size())

  

在运行时检查所有数组访问;尝试使用索引   小于零或大于或等于的长度   数组导致抛出ArrayIndexOutOfBoundsException。

因此,您尝试在IndexOutOfBoundsException中一起抓住计划中的ArrayIndexOutOfBoundsException

例如:

SwitchTypeSensor