2014-11-01 1 views
0

У меня проблема с моим кодом, где я просматриваю ArrayList и получаю currentVehicle и возвращаю его для отображения в интерфейсе графического интерфейса.Как остановить метод от возврата null после завершения прохождения через ArrayList?

У меня возникли проблемы при достижении конца ArrayList, и он начинает возвращать 'null'. Когда он возвращает «null», я не могу вернуться к предыдущим транспортным средствам, так как значение currentVehicle теперь присвоено как «null».

Я попытался с помощью while петель, чтобы перезапустить цикл, 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); очищает 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

Отлично. Спасибо за Ваш ответ. –

1

Если я понимаю ваш код (и намерение) вы могли бы сделать,

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

Конечно, если vehicleArray является нулевым (или пустым), указанный выше код не будет работать. Java-8 (и guava) имеют Optional<T> для этого,

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

Спасибо, я буду иметь это в виду. –

Смежные вопросы