对于本程序,实例变量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());
}
}
答案 0 :(得分:0)
一切对我来说都很好。如果你有toString方法,也许你不需要获得getter,这会返回汽车的所有属性。 Juste在返回中包含变量和字符串,并删除getter
干得好!
答案 1 :(得分:0)
您可以在进行用户输入时进行检查,也可以在构造函数(或两者)
进行检查int year = 0;
while (year < 1900) {
System.out.println("Year? ");
year = scanner.nextInt();
}