使用Getters和Setters问题的汽车计划

时间:2015-01-13 23:07:54

标签: java

对于本程序,实例变量make和model需要是一个字符串,价格需要是我已经拥有的两倍,但不知道如何处理需要为int类型且大于1900年的年份。我然后需要使用我已经完成的参数创建一个构造函数,但是toString需要使用setter和getters方法返回Car对象的字符串表示形式。所以我遇到了一个问题,试图为制定者提出一些问题,如果我正在做这个部分的话。

public class Car {

private String make;
private String model;
private double price;
private int year;

public Car(String make, String model, double price, int year) {

    this.make = make;
    this.model = model;
    this.price = price;
    this.year = year;

}

private String getMake() {
    return make;
}

private void setMake(String make) {
    this.make = make;
}

private String getModel() {
    return model;
}

private void setModel(String model) {
    this.model = model;
}

private double getPrice() {
    return price;
}

private void setPrice(double price) {
    this.price = price;
}

private int getYear() {
    return year;
}

private void setYear(int year) {
    this.year = year;
}

public String toString() {

    return "Make of Car: " + getMake() + "\n Model of Car: " + getModel()
            + "\n Price of Car: " + getPrice() + "\n Year of Car: " + getYear();

}

}

此部分是CarTest驱动程序,我不确定我是否正确执行此操作。我必须有一个Main方法,通过调用参数构造函数实例化Car对象car1,并使用toString方法向控制台显示对象car1的字符串表示形式。还要求用户输入每个实例变量的值,并使用setter类型方法将输入的值分配给对象car1的相应实例变量,然后我需要通过调用toString方法显示对象car1的字符串表示。我这样做了吗?

public class CarTest {

static Car car1;

public static void main(String[] args){

    Scanner scan = new Scanner(System.in);

    System.out.print("Make?");
    String make = scan.nextLine();

    System.out.print("Model?");
    String model = scan.nextLine();

    System.out.print("Price?");
    double price = scan.nextDouble();

    System.out.print("Year?");
    int year  = scan.nextInt();

    car1 = new Car(make,model,price,year);

    System.out.print(car1.toString());
}

}

2 个答案:

答案 0 :(得分:0)

一切对我来说都很好。如果你有toString方法,也许你不需要获得getter,这会返回汽车的所有属性。 Juste在返回中包含变量和字符串,并删除getter

干得好!

答案 1 :(得分:0)

您可以在进行用户输入时进行检查,也可以在构造函数(或两者)

进行检查
int year = 0;
while (year < 1900) {
    System.out.println("Year? ");
    year = scanner.nextInt();
}