繁体   English   中英

一旦完成ArrayList,如何停止方法返回null?

[英]How to stop the method from returning null once finished going through the ArrayList?

我的代码有问题,我通过ArrayList并获取currentVehicle并将其返回以显示在GUI界面中。

我到达ArrayList的末尾时遇到问题,它开始返回'null'。 当它返回“ null”时,我无法返回以前的车辆,因为currentVehicle值现在被分配为“ null”。

我尝试使用while循环重新启动循环, else, and else if使用else, and else if循环,并使用lastIndexOfisEmpty检查ArrayList并尝试使其重新循环。

下面是ArrayList的代码,我在其中搜索列表中的下一辆车,并且我认为此修复程序可能存在。

Showroom.java

 public Vehicle nextVehicle()
    {  
        Vehicle nV = null;

        try
        {      
            if (currentVehicle < vehicleArray.size())
            {
                nV = vehicleArray.get(currentVehicle++);
            }
        }
        catch(Exception e)
        {
            System.out.println("No more vehicles listed");
        }   

        return nV;
    }

GUIMain是发生输出的地方,我正在打印到JPanel TextArea

GUIMain.java

    public void actionPerformed(ActionEvent e)
    {
        if(e.getSource() == nextButt)
        {
                log.setText(null);
                log.append("" + s.nextVehicle());
        }

    }

log.setText(null); 清除要显示的下一个Vehicle的JPanel文本框,并log.append("" + s.nextVehicle()); 将currentVehicle打印到JPanel TextArea

任何帮助将不胜感激。 如果需要任何其他代码或需要SSCCE,我将继续进行。

好吧,如果要在到达最后一辆车后返回第一辆车,请执行以下操作:

public Vehicle nextVehicle()
    {  
        Vehicle nV = null;

        try
        {      
            if (currentVehicle < vehicleArray.size())
            {
                nV = vehicleArray.get(currentVehicle++);
            } else {
                if (vehicleArray.size() > 0) {
                    nV = verhicleArray.get(0);
                    currentVehicle = 1;
                }
            }
        }
        catch(Exception e)
        {
            System.out.println("No more vehicles listed");
        }   

        return nV;
    }

如果我了解您的代码(和意图),您可以做到,

return vehicleArray.get(vehicleArray.size()-1);

当然,如果vehicleArray为null(或为空),则以上代码将不起作用。 Java-8(和番石榴)为此具有Optional<T>

public Optional<Vehicle> nextVehicle() {
    if (vehicleArray != null && !vehicleArray.isEmpty()) {
        return Optional
                .ofNullable(vehicleArray.get(vehicleArray.size() - 1));
    }
    return Optional.empty();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM