[英]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
循环,并使用lastIndexOf
和isEmpty
检查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.