抛出ArrayIndexOutOfBounds时没有捕获?

时间:2015-09-16 02:27:46

标签: java arraylist

我有一个程序,其中创建了一个ArrayList(列表),该列表填充了100个随机整数。用户输入数组的索引,然后程序显示相应的ArrayList值。如果用户输入的索引值超出范围,则会捕获其错误并向其显示一条消息。我已经设置了所需的一切,但每次输入超出范围的索引时,都不会捕获错误,Java会显示自己的错误消息。这是我的代码:

import java.util.*;

public class MyArrayIndexOutOfBounds
{
   public static void main(String [] args)
   {
      ArrayList<Integer> list = new ArrayList<>();
      int number;
      for (int i= 0; i < 100; i++)
      {
         number = (int)(Math.random()*21);
         list.add(number);
      }

      run(list);
   }

   public static void run(ArrayList<Integer> list)
   {
      System.out.println("Please enter an index number for the array: ");
      Scanner input = new Scanner(System.in);
       try{
      int number = input.nextInt();
      int result = list.get(number);
      System.out.println(result);
      }
      catch(ArrayIndexOutOfBoundsException ex)
      {
         System.out.println("Out of Bounds");
      }
   }  
}

3 个答案:

答案 0 :(得分:2)

ArrayLists抛出IndexOutOfBoundsExceptions。尝试将ArrayIndexOutOfBoundsException ex替换为IndexOutOfBoundsException ex

答案 1 :(得分:0)

只需更改例外类IndexOutOfBoundsException而不是ArrayIndexOutOfBoundsException

有关http://docs.oracle.com/javase/7/docs/api/java/lang/ArrayIndexOutOfBoundsException.html

的更多详情

答案 2 :(得分:0)

您需要在catch块中使用IndexOutOfBoundsException

使用此

catch(IndexOutOfBoundsException ex)

而不是

catch(ArrayIndexOutOfBoundsException ex)