2016-09-20 6 views
0

У меня есть список массива типа автомобиля. У меня есть основной метод toString, который печатает мой автомобиль в нужном формате. Я использую метод arraylist.get(index) для печати автомобилей. У меня только один пока это работает, но я хочу, чтобы он печатал все автомобили в списке массивов.toString ararylist содержащий объект

Это мой код:

public class Garage { 

    private static int carsCapacity = 30; 
    ArrayList<Cars> myGarage; 
    public Garage() { 
     Scanner scanAmountOfCars = new Scanner(System.in); 
     System.out.println("Please limit the number of car the garage can contain."); 
     System.out.println("If greater than 50, limit will be 30."); 
     int validAmount = scanAmountOfCars.nextInt(); 
     if (validAmount <= 50) { 
      carsCapacity = validAmount; 
      myGarage = new ArrayList<Cars>(); 
     } 
     System.out.println(carsCapacity); 
    } 

    public void addCar() { 
     Cars car = new Cars(Cars.getID(), Cars.askCarID(), Cars.getPosition(), Attendant.askForAtt(), System.currentTimeMillis()); 
     myGarage.add(car); 
     //System.out.println(car); 
    } 


    public static int getCarsCapacity() { 
     return carsCapacity; 
    } 

    @Override 
    public String toString() { 
     return "Garage [Car:" + myGarage.get(0).getPlateNum() + " ID:" + myGarage.get(0).getCarID() + " Position:" + Cars.getPosition() + 
       " Assigned to:" + Cars.getAssignedTo().getId() + "(" + Cars.getAssignedTo().getName() 
       + ")" + " Parked at:" + Cars.convert(myGarage.get(0).getCurrTime()) + "]"; 
    } 
} 

Я также поставил Cars класс в случае, если вам это нужно:

public class Cars { 

    private String carID; 
    private String plateNum; 
    private static String position; 
    private static Attendant assignedTo; 
    private long currTime; 
    static String[] tempArray2 = new String[Garage.getCarsCapacity()]; 


    public Cars(String carID, String plateNum, String position, Attendant assignedTo, long currTime) { 
     this.carID = carID; 
     this.plateNum = plateNum; 
     Cars.position = position; 
     Cars.assignedTo = assignedTo; 
     this.currTime = currTime; 
    } 

    private static void createCarsID() { 

     for (int x = 0; x < Garage.getCarsCapacity(); x++) { 
      tempArray2[x] = ("CR" + (x + 1)); 
     } 
    } 

    public static String getID() { 

     createCarsID(); 
     String tempID = null; 
     String tempPos = null; 
     for (int x = 0; x < tempArray2.length; x++) { 
      if (tempArray2[x] != null) { 
       tempID = tempArray2[x]; 
       tempPos = tempArray2[x]; 
       getPos(tempPos); 
       tempArray2[x] = null; 
       break; 
      } 
     } 

     return tempID; 
    } 

    public static void getPos(String IdToPos) { 
     String strPos = IdToPos.substring(2); 
     int pos = Integer.parseInt(strPos); 
     position = "GR" + pos; 

    } 

    public String getPlateNum() { 
     return plateNum; 
    } 


    public String getCarID() { 
     return carID; 
    } 

    public static String getPosition() { 
     return position; 
    } 

    public long getCurrTime() { 
     return currTime; 
    } 


    public static Attendant getAssignedTo() { 
     return assignedTo; 
    } 

    public static String askCarID() { 
     boolean valid = false; 
     System.out.println("Please enter your car's plate number."); 
     Scanner scanCarID = new Scanner(System.in); 
     String scannedCarID = scanCarID.nextLine(); 
     while (!valid) { 
      if (scannedCarID.matches("^[A-Za-z][A-Za-z] [0-9][0-9][0-9]$")) { 
       valid = true; 
       System.out.println(scannedCarID); 
      } else { 
       System.out.println("Please enter a valid plate number. Ex: AF 378"); 
       askCarID(); 
      } 
     } 
     return scannedCarID.toUpperCase(); 
    } 

    public static String convert(long miliSeconds) { 
     int hrs = (int) TimeUnit.MILLISECONDS.toHours(miliSeconds) % 24; 
     int min = (int) TimeUnit.MILLISECONDS.toMinutes(miliSeconds) % 60; 
     int sec = (int) TimeUnit.MILLISECONDS.toSeconds(miliSeconds) % 60; 
     return String.format("%02d:%02d:%02d", hrs, min, sec); 
    } 

} 
+0

Помог ли мой ответ? Если да, отметьте это как решение, щелкнув галочку ниже оценки ответа. – xenteros

ответ

3

Ваш Garage должны иметь реализацию toString(), которая использует ArrayList#toString() реализацию:

public String toString() { 
    return "Garage: " + myGarage.toString(); 
} 

Также не забудьте реализовать toString() в Cars.java.

public String toString() { 
    return "[" + this.carID + " " + 
    this.plateNum + " " + 
    Cars.position + " " + 
    Cars.assignedTo.toString + " " + 
    String.valueOf(this.currTime) + "]" 
} 

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

  • Нет связанных вопросов^_^