初学者的基本 IndexOutOfBoundsException
Basic IndexOutOfBoundsException for beginners
我有一个工程师 class。我正在创建一个工程师类型的空数组列表。
我正在创建一种方法来检查 arraylist,如果 arraylist 不为空,它必须给我索引 0。但是如果 arraylist 为空。我的方法必须创建一个新的 Engineer 对象并添加到空数组列表中。添加之后,我期望我的方法给我索引 0。但它会抛出 IndexOutOfBoundsException。我知道我错过了一些简单的事情,但我不知道如何解决。
ArrayList<Engineer> newEmptyEngineerList = new ArrayList<>();
findLastEngineer(newEmptyEngineerList);
public static void findLastEngineer(ArrayList aa){
if (aa.get(0)!=null){
System.out.println(aa.get(0));
}
else {
Engineer eng = new Engineer();
aa.add(0,eng);
System.out.println(aa.get(0));
}
}
在调用 get(0)
之前,您必须确保列表不为空。
还应避免使用原始数组列表,并在用作函数参数或 return 类型时更喜欢接口 List
而非其实现。
public static void findLastEngineer(List<Engineer> aa) {
if (aa.isEmpty()){
aa.add(new Engineer());
}
// get and print last element
System.out.println(aa.get(aa.size() - 1));
}
我有一个工程师 class。我正在创建一个工程师类型的空数组列表。
我正在创建一种方法来检查 arraylist,如果 arraylist 不为空,它必须给我索引 0。但是如果 arraylist 为空。我的方法必须创建一个新的 Engineer 对象并添加到空数组列表中。添加之后,我期望我的方法给我索引 0。但它会抛出 IndexOutOfBoundsException。我知道我错过了一些简单的事情,但我不知道如何解决。
ArrayList<Engineer> newEmptyEngineerList = new ArrayList<>();
findLastEngineer(newEmptyEngineerList);
public static void findLastEngineer(ArrayList aa){
if (aa.get(0)!=null){
System.out.println(aa.get(0));
}
else {
Engineer eng = new Engineer();
aa.add(0,eng);
System.out.println(aa.get(0));
}
}
在调用 get(0)
之前,您必须确保列表不为空。
还应避免使用原始数组列表,并在用作函数参数或 return 类型时更喜欢接口 List
而非其实现。
public static void findLastEngineer(List<Engineer> aa) {
if (aa.isEmpty()){
aa.add(new Engineer());
}
// get and print last element
System.out.println(aa.get(aa.size() - 1));
}