toString一个包含对象的数组列表 [英] toString an arraylist containing object

查看:38
本文介绍了toString一个包含对象的数组列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I have an array list of type car. I have an overriding toString method which prints my car in the desired format. I'm using the arraylist.get(index) method to print the cars. I only have one for now it works, but I want it do print for all of the cars in the array list.

这是我的代码:

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 类:

I also put the Cars class in case you need it:

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 应该具有 toString()的实现,该实现使用 ArrayList#toString()实现:

Your Garage should have the implementation of toString() which uses ArrayList#toString() implementation:

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) + "]"
}

这篇关于toString一个包含对象的数组列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆