检查数组索引以避免异常异常

时间:2013-09-29 19:13:46

标签: arraylist indexoutofboundsexception try-catch-finally

我对Java仍然很陌生,所以我觉得我做的比我在这里做的更多,并且会感谢任何关于是否有更熟练的方法来解决这个问题的建议。这就是我想要做的事情:

  1. 输出Arraylist中的最后一个值。

  2. 有意插入一个超出范围的索引值与system.out(在这种情况下为index(4))

  3. 绕过不正确的值并提供最后一个有效的Arraylist值(我希望这是有道理的)。

  4. 我的程序运行正常(我稍后会添加更多内容,因此最终会使用userInput),但我想在不使用try / catch / finally块的情况下执行此操作(即检查索引)长度)如果可能的话。提前谢谢大家!

    import java.io.BufferedReader;
    import java.io.IOException;
    import java.io.InputStreamReader;
    import java.util.ArrayList;
    
    public class Ex02 {
    
    public static void main(String[] args) throws IOException {
    
        BufferedReader userInput = new BufferedReader(new InputStreamReader(
                System.in));
    
        try {
            ArrayList<String> myArr = new ArrayList<String>();
            myArr.add("Zero");
            myArr.add("One");
            myArr.add("Two");
            myArr.add("Three");
            System.out.println(myArr.get(4));
    
            System.out.print("This program is not currently setup to accept user input. The last       printed string in this array is: ");
    
        } catch (Exception e) {
    
           System.out.print("This program is not currently setup to accept user input.  The requested array index which has been programmed is out of range. \nThe last valid string in this array is: ");
    
                } finally {
            ArrayList<String> myArr = new ArrayList<String>();
            myArr.add("Zero");
            myArr.add("One");
            myArr.add("Two");
            myArr.add("Three");
            System.out.print(myArr.get(myArr.size() - 1));
        }
    }
    

    }

1 个答案:

答案 0 :(得分:1)

检查数组索引以避免异常异常: 在给定的ArrayList中,您始终可以获得它的长度。通过简单的比较,您可以检查您想要的条件。我没有通过你的代码,下面就是我在说什么 -

public static void main(String[] args) {
    List<String> list = new ArrayList<String>();
    list.add("stringA");
    list.add("stringB");
    list.add("stringC");

    int index = 20;
    if (isIndexOutOfBounds(list, index)) {
        System.out.println("Index is out of bounds. Last valid index is "+getLastValidIndex(list));
    } 
}

private static boolean isIndexOutOfBounds(final List<String> list, int index) {
    return index < 0 || index >= list.size();
}

private static int getLastValidIndex(final List<String> list) {
    return list.size() - 1;
}