2016-09-20 35 views
0

我有一个类型车的数组列表。 我有一个压倒一切的toString方法,它可以按照需要的格式打印我的汽车。 我正在使用arraylist.get(index)方法打印汽车。 我现在只有一个它可以工作,但我希望它可以打印数组列表中的所有汽车。toString一个包含对象的数组列表

这是我的代码:

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(); 
} 

还请记住在Cars.java中实施toString()

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