2014-09-29 81 views
-1

好车班,我需要编写代码,使这个文件使用Java创建

public class HW1tester 
{ 
    public static void main(String[] args) 
    {  
     Car car1 = new Car(); 
     Car car2 = new Car("Ford", 2013, 20000); 
     Car car3 = new Car("Audi", 2012, 25000); 
     Car car4 = new Car(); 

     car2.setPrice(22000); 
     car2.setYear(2011); 

     car4.setBrand("Cadillac"); 

     System.out.println("This car is " + car1.getBrand() + ", year " + car1.getYear() + ", price " + car1.getPrice()); 
     System.out.println("This car is " + car2.getBrand() + ", year " + car2.getYear() + ", price " + car2.getPrice()); 
     System.out.println("This car is " + car3.getBrand() + ", year " + car3.getYear() + ", price " + car3.getPrice()); 
     System.out.println("This car is " + car4.getBrand() + ", year " + car4.getYear() + ", price " + car4.getPrice()); 

     System.out.println("The total car number is: " + car1.getNumber()); 
     System.out.println("The total car number is: " + car2.getNumber()); 
     System.out.println("The total car number is: " + car3.getNumber()); 
     System.out.println("The total car number is: " + car4.getNumber()); 

    } 
} 

到目前为止,我有这个,但我不知道什么是地狱,我做错了。

public class Car 
{ 
    private int yearModel; 
    private String brand; 
    private int priceModel; 
    private int numberModel; 

    public Car(String b, int year, int price, int number) 
    { 
     yearModel = year; 
     brand = b; 
     priceModel = price; 
     numberModel = number;  
    } 

    public int getYear()     
    { 
     return yearModel; 
    } 

    public String getBrand() 
    { 
     return brand; 
    } 

    public int getPrice() 
    { 
     return priceModel; 
    } 

    public int getNumber() 
    { 
     return numberModel; 
    } 

    public void setYear(int year) 
    { 
     yearModel = year; 
    } 

    public void setBrand(String carBrand) 
    { 
     brand = carBrand; 
    } 

    public void setPrice(int price)       
    { 
     priceModel = price; 

    public void setNumber(int number) 
    { 
     numberModel = number; 
    } 
} 

每次我现在运行的第一个代码,它只是给我上CAR1,CAR2等错误,我只是似乎无法看到我在做什么错可言,我希望有人能帮助我。顺便说一下,我无法对HW1tester进行任何更改。

回答

4

您已经创建参数的构造函数即public Car(String b, int year, int price, int number)

所以,当你想为同创建对象一样,Car car1 = new Car();那么这将是不可能的。因为在这里你正试图调用默认的构造函数。这不在课堂上。

创建对象时,您需要通过参数。

此外,在Car car2 = new Car("Ford", 2013, 20000);您正在传递3个与构造函数不匹配的参数。

要创建一流的汽车的目标,你需要做这样的事情,

Car c = new Car('Volvo', 2014, 25000, 1234);

+0

@downvoter阅读我的完整答案,让我知道downvote的原因 – gprathour 2014-09-29 03:43:48

+0

任何人都在乎给出理由? – gprathour 2014-09-29 03:44:43

+0

对我来说很不错 – 2014-09-29 03:45:35

4

当创建一个新的对象(CAR1,CAR2等),你没有经过足够的变量。你的构造函数需要4个,并且当你尝试构造一个新的汽车物体时,你最多会给出3个变量。

+0

好吧,那么我先试着修正什么呢?对不起,我不擅长这个东西。 – Kyle 2014-09-29 03:45:15

+0

检查我编辑的问题并确保仍然适用。我无法对HW1Tester文件做任何事情,我需要使Car类自行工作,而无需进行任何其他修改。 – Kyle 2014-09-29 03:50:16

+0

@PM为什么你要说从构造函数中删除参数?为什么不在创建对象时传递四个参数?重点是什么? – gprathour 2014-09-29 03:51:25

1

您需要使用不同的参数集编写重载的构造函数。 当你调用新车(),JAVA是寻找一个构造函数没有参数,可以新车( “奥迪”,2013年,25000)一个3个PARAMS等

在Car.java文件:

public Car() {} 

然后你可以用它们的getter和setter设置实例变量(直到你这样做,它们的值将为空)。

如果你想,你可以定义更多,但他们的签名必须不同。例如: public Car(String b, int year) { ... }public Car(String b, int price) {...}不会工作,因为它们具有相同的签名。

1

在Car类中,您有一个具有4个参数的构造函数。但是,在主课程中,您将创建一个带有0或3个参数的汽车。在其他运行代码中,您必须再添加2个构造函数,一个使用0参数,另一个使用3个参数。

public Car() { 
} 

public Car(String b, int year, int price) { 
    yearModel = year; 
    brand = b; 
    priceModel = price; 
} 
0
public Car() { 
} 

public Car(String b, int year, int price,) { 
    yearModel = year; 
    brand = b; 
    priceModel = price; 
} 

在这种情况下,你必须有4个参数的构造函数。