任何人都可以帮助修复此运行时错误?

时间:2021-04-21 04:42:09

标签: java runtime-error

使用 arraylist 并尝试获取最后一个元素时,我遇到了一些运行时错误。

import java.util.ArrayList;

public class MyProgram{

    private ArrayList<String> list = new ArrayList<String>();
    
    public void printLastThing(){
        int lastIndex = list.size() - 1;
        String thing = list.get(lastIndex);
        System.out.println(thing);
    }
    
    public static void main(String[] args){
        MyProgram example = new MyProgram();
        example.printLastThing();
    }
}

1 个答案:

答案 0 :(得分:1)

没有元素添加到列表中,所以它是空的。您正在尝试获取 -1 处的元素,这将引发 java.lang.IndexOutOfBoundsException。

在这种情况下,您应该检查是否越界。

我添加了一个方法来检查 lastindex。如果列表为空,它将返回 -1,如果列表为空,您可以在获得 -1 后显示该列表。

import java.util.ArrayList;

public class MyProgram{

    private ArrayList<String> list = new ArrayList<String>();
    
    public MyProgram() {
        list.add("a");
        list.add("z");
    }
    
    public void printLastThing(){
        
        int lastIndex = getLastIndex();
        if(lastIndex >= 0) 
            System.out.println(list.get(lastIndex));
        else
            System.out.println("List is empty");
        
    }
    
    private int getLastIndex() {
       if(list.size()==0) {
           return -1;
       }
       
       return list.size() - 1;
    }
    
    public static void main(String[] args){
        MyProgram example = new MyProgram();
        example.printLastThing();
    }
}