toString包含object的数组列表



我有一个类型为car的数组列表。我有一个重写的toString方法,它以所需的格式打印我的汽车。我正在使用arraylist.get(index)方法来打印汽车。我现在只有一个,但我想打印数组列表中所有的汽车。

这是我的代码:

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

您的Garage应该使用ArrayList#toString()实现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) + "]"
}

最新更新