首页 > 解决方案 > 任何人都可以帮助解决此运行时错误?

问题描述

使用 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();
    }
}

标签: javaruntime-error

解决方案


列表中没有添加任何元素,因此它是空的。您正在尝试获取 -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();
    }
}

推荐阅读