1

我对 Java 还是很陌生,所以我觉得我在这里做的比我需要做的要多,如果有任何关于是否有更熟练的方法来解决这个问题的建议,我将不胜感激。这是我正在尝试做的事情:

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

  2. 使用 system.out 故意插入一个超出范围的索引值(在这​​种情况下为索引 (4))

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

我的程序运行良好(我稍后会添加更多,因此最终将使用 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));
    }
}

}

4

1 回答 1

4

检查数组索引以避免越界异常: 在给定的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;
}
于 2013-09-29T19:34:16.457 回答