Java-приложение не отображает вывод - PullRequest
0 голосов
/ 23 сентября 2010

Вот мой обновленный код:

package car1;

публичный класс Main {

public static void main (аргументы String []) {

класс HondaCivic реализует автомобиль 1 {

int speed = 0;
int rpm = 0;
int gear = 1;

public void speedUp(int Increment) {
    speed = speed + Increment;}

public void applyBrakes(int Decrement) {
    speed = speed - Decrement;}

public void changeRpm(int NewValue) {
    rpm = NewValue;}

public void changeGear(int NewValue) {
    gear = NewValue;}

public void printStates() {
    System.out.println("speed:"+speed+" rpm:"+rpm+" gear:"+gear);}

}

class CarDemo{
public void main(String[] args) {
    // Two different Cars
    HondaCivic car1 = new HondaCivic();
    HondaCivic car2 = new HondaCivic();
    // Methods for cars
    car1.speedUp(30);
    car1.changeGear(3);
    car1.changeRpm(3000);
    car1.applyBrakes(15);
    car1.printStates();

    car2.speedUp(30);
    car2.changeGear(3);
    car2.changeRpm(2000);
    car2.applyBrakes(15);
    car2.speedUp(5);
    car2.changeGear(1);
    car2.printStates();
}

} } }

Приложение не будет отображать вывод. Я понятия не имею, что делать. Любой совет?

Ответы [ 5 ]

3 голосов
/ 23 сентября 2010

Java, как и большинство языков программирования, чувствительна к регистру. Class - это не то же самое, что class.

1 голос
/ 23 сентября 2010

Интерфейс должен реализовывать ВСЕ методы от своего родителя. Вы реализуете все, кроме

printStates()

Также проверьте чувствительность к регистру в объявлении класса.

edit: nvm не объявлено как абстрактное

1 голос
/ 23 сентября 2010

Java чувствительна к регистру:

Class HondaCivic implements Car {

отличается от допустимого синтаксиса:

class HondaCivic implements Car {
0 голосов
/ 23 сентября 2010

В вашем коде много проблем.

Во-первых, сделайте Car интерфейсом вроде interface Car

Во-вторых Переместите весь код с HondaCivic на Car и весь код с Car to HondaCivic т.е. поменяйте местами код, потому что интерфейс может иметь только объявления методов и переменные, но не реализацию.Класс, реализующий интерфейс, должен обеспечить реализацию ВСЕХ этих методов.

Наконец, в основном методе напишите этот код вместо того, что вы используете для создания экземпляров Car

Car car1 = new HondaCivic();
Car car2 = new HondaCivic();

Тогдаон скомпилируется и запустится.

0 голосов
/ 23 сентября 2010

Я могу заметить несколько проблем, некоторые из которых вы, возможно, уже исправили:

  1. Class должно быть class (в нижнем регистре) в определении второго класса.
  2. Car не является интерфейсом, поэтому вы должны extend использовать его, а не реализовывать его.
  3. HondaCivic не является абстрактным или интерфейсным, поэтому он должен иметь тела методов для каждого из своих методов; в качестве альтернативы, оставьте методы вне HondaCivic, в этом случае вместо них будут использоваться методы Car.

В вашем текущем макете класса было бы гораздо больше смысла, если бы он создавал объект Honda Civic, а не класс, поскольку у него нет новых функций:

Car hondaCivic = new Car();
...