2014-11-01 18 views
0

我遇到了我的代碼問題,我在那裏通過ArrayList並獲取currentVehicle並將其返回以顯示在GUI界面中。如何在完成ArrayList操作後停止返回null的方法?

我在達到ArrayList的末尾時出現問題,它開始返回'null'。由於它返回'null',我無法返回到之前的車輛,因爲currentVehicle值現在被分配爲'null'。

我一直在使用while循環重啓循環,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文本區

GUIMain.java

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

    } 

log.setText(null);清除JPanel爲文本框要顯示的下一輛車和log.append("" + s.nextVehicle());將當前車輛打印到JPanelTextArea

任何幫助將不勝感激。如果需要其他代碼或需要SSCCE,我會繼續完成。

回答

3

好吧,如果你想一旦到達最後一個回到第一車輛,做到以下幾點:

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; 
    } 
+0

完美。感謝您的回答。 – 2014-11-01 05:25:27

1

如果我理解你的代碼(和意圖),你可以做,

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

當然,如果vehicleArray爲空(或空),上面的代碼將不起作用。 Java-8(和番石榴)對此有Optional<T>

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

謝謝,我會牢記這一點。 – 2014-11-01 05:27:35

相關問題