Программа авто класса - PullRequest
0 голосов
/ 26 февраля 2019

Ниже приведен класс драйвера, который мне дали, и мне не разрешено редактировать / изменять этот класс

public class HW2tester
{
   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());
   }
}

Это файл класса Car.java, который я создал

public class Car
{
   private int year;
   private String brand;
   private int price;
   private int number;

public Car()
{
   year = 0;
   brand = null;
   price = 0;
   number = 0;
}

public Car( int y, String b, int p)
{
   number++;
   year = y;
   brand = b;
   price = p;
}

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

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

public void setPrice( int p)
{
   price = p;
}

public int getYear()
{
   return year;
}

public String getBrand()
{
   return brand;
}

public int getPrice()
{
   return price;
}

public int getNumber()
{
   return number;
}

}   

Проблемы, которые у меня возникают: Попытка включить счетчик для отображения общего количества автомобилей (4) Первый объект car car1 и последний car4 не отображаются из-за отсутствия класса водителя, и я не могу изменить класс тестера, только класс моего автомобиля.

как должен выглядеть вывод

This car is Chevy, year 2005, price 3000
This car is Ford, year 2011,price 22000
This car is Audi, year 2012, price 25000
This car is Cadillac, year 2005, price 3000
The total car number is: 4
The total car number is: 4
The total car number is: 4
The total car number is: 4

РЕДАКТИРОВАТЬ Я внес изменения, рекомендованные мне, но я получаю сообщение об ошибке оПреобразование строки в Int по некоторым причинам.Вот изменения, которые я сделал, и сообщение об ошибке, которое я получаю.

public class Car
{
   int year;
   String brand;
   int price;
   static int number;

public Car()
{
   year = 2005;
   brand = "Chevy";
   price = 3000;
   number++;
}

HW2tester.java:6: error: incompatible types: String cannot be converted to int
      Car car2 = new Car("Ford", 2013, 20000);
                         ^
HW2tester.java:7: error: incompatible types: String cannot be converted to int
      Car car3 = new Car("Audi", 2012, 25000);
                     ^

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Первое, что вам нужно сделать, - это сделать переменную 'number' статической переменной, чтобы она использовалась всеми объектами класса, а для каждого объекта не создавалась копия.И вам нужно увеличивать число в обоих конструкторах, а не только в параметризованном конструкторе.

private static int number;

И в обоих конструкторах вам нужно сделать

number++;

Созданный параметризованный конструкторВы правы, и конструктор по умолчанию от 'Chipster' правильный.

Надеюсь, я дал понять.

0 голосов
/ 26 февраля 2019

Проблема заключается в вашем конструкторе по умолчанию :

public Car()
{
   year = 0;
   brand = null;
   price = 0;
   number = 0;
}

Все установлено на 0 или null, что означает ваш фактический вывод (хотя на момент написания этой статьиВы еще не опубликовали это), вероятно, что-то вроде:

This car is , year 0, price 0
This car is Ford, year 2011,price 22000
This car is Audi, year 2012, price 25000
This car is Cadillac, year 0, price 0
The total car number is: 0
The total car number is: 4
The total car number is: 4
The total car number is: 0

Или что-то в этом роде.Это потому, что вы установили все переменные-члены на 0 или null.

Попробуйте изменить конструктор по умолчанию на что-то вроде этого:

public Car()
{
   // This car is Chevy, year 2005, price 3000
   year = 2005;
   brand = "Chevy";
   price = 3000;
   number = 4;
}

Таким образом, когда вы создаете экземпляр (т.е. создайте) объект без параметров (как с автомобилем 1 и автомобилем 4), он автоматически заполнит эти значения для вас.

РЕДАКТИРОВАТЬ: Как указал Мохд Акбар, вытакже есть другая проблема с вашим кодом, а именно number является переменной экземпляра , а не статической .

Возможно, вы захотите изменить число набыть похожим на этот пример , вот так:

 static int number = 0;

И измените ваш конструктор так, чтобы он соответствовал:

public Car()
{
   // This car is Chevy, year 2005, price 3000
   year = 2005;
   brand = "Chevy";
   price = 3000;
   number++;
}

Вместо моего первоначального предложения number = 4;

Редактировать 2: Другая проблема, с которой вы можете столкнуться, состоит в том, что ваши аргументы вышли из строя на другом конструкторе:

public Car( int y, String b, int p)

Ваш другой класс (тот, который вам дали) ожидает аргументы как это:

public Car(String b, int y, int p)

И это должно исправить otее проблема у вас.

...