2016-10-24 5 views
-3

У меня есть проект для моего курса программирования Java.Реализация программы Demo/Tester

Инструкция состоит в том, что мы должны создать простой класс и класс тестера, а класс должен включать конструктор по умолчанию; Параметрированный конструктор с тремя параметрами (марка, модель и цена); Accessor метод, называемый getMake(), чтобы вернуть make; Accessor метод, называемый getModel(), чтобы вернуть модель; Accessor метод, называемый getPrice(), чтобы вернуть цену; Метод мутатора setMake (String newMake) для установки make; Mutator method setModel (String newModel), чтобы установить модель; и метод Mutator setPrice (double newPrice), чтобы установить цену.

Я создал программу класса и тестера, и мой класс отлично компилируется. Когда я пытаюсь запустить его, хотя получаю ошибку, что нет основного метода. Теперь я последовал примеру моего профессора для программы тестеров, и я получил несколько ошибок. Если бы кто-нибудь мог дать мне указатель в правильном направлении, я был бы признателен.

Мой вопрос: как реализовать программу тестера? Нужно ли создавать zip-файл? Я пытался сделать это и, похоже, не очень помогает ...

Ниже мой код класса:

public class Automobile 
{ 
    private String make;  
    private String model; 
    private double price; 

    public Automobile() 
    { 
     make = "Lexus2017"; 
     model = "RX"; 
    } 

    public Automobile(String initMake, String initModel, double initPrice) 
    { 
     make = initMake; 
     model = initModel; 
     price = initPrice; 
    } 

    public String getMake() 
    { 
     return make; 
    } 

    public String getModel() 
    { 
     return model; 
    } 

    public double getPrice() 
    { 
     return price; 
    } 

    public void setMake(String newMake) 
    { 
     make = newMake; 
    } 

    public void setModel(String newModel) 
    { 
     model = newModel; 
    } 

Кроме того, следующий мой тестер класс (тот, который имеет много ошибок):

public class AutomobileTester 
{ 
    public static void main(String[] args) 
    { 
     Automobile make = new Automobile("Lexus 2017"); 
     System.out.println("The car is " + make.getMake()); 

     Automobile model = new Automobile("RX"); 
     System.out.println("The car is " + Automobile.getModel()); 

     Automobile price = new Automobile("43020"); 
     System.out.println("The car is " + Automobile.getPrice()); 

     // Use the mutator to change the make variable 
     Automobile.setMake("Lexus 2017"); 
     System.out.println("The car is " + backDoor.getState()); 

     // Use the mutator to change the model variable 
     Automobile.setModel("RX"); 
     System.out.println("The car is called " + backDoor.getName()); 

     Automobile.setPrice("43020"); 
     System.out.println("The car is " + price.getPrice()); 
    } 
} 

Это мой первый опыт работы с конструкторами, и я новичок в Java, поэтому я извиняюсь за каких-либо очевидных ошибок. Спасибо заранее за ваше время и помощь.

+1

' Параметрированный конструктор с t hree parameters (make, model and price); 'не соответствует' new Automobile («Lexus 2017»); ' –

+0

Не используйте имя класса для доступа к методам ... У вас здесь много ошибок. Вы ожидаете, что мы все исправим и выполним ваше задание? –

+0

@ cricket_007 Нет. Это было бы смешно, и я не узнал бы ничего таким образом. Я просто хочу понять, как реализовать класс, потому что я три раза читал свою главу, слушал лекции, и что-то не нажимало на меня. Я просто хотел ввести код только для контекста. –

ответ

1

Одна из первых проблем заключается в том, что вы не используете правильное количество параметров для своих вызовов в конструкторе, в Java (и большинстве языков программирования), вы должны предоставить все необходимые параметры методу/функции/constructor за один вызов. Исправление кода будет использовать:

Automobile car = new Automobile("Lexus 2017", "RX", 43020.0D); 

Кроме того, когда вы печатаете информацию автомобилей сначала использовать instance вызов затем, когда вы используете static вызов, я не пойду на многое в разнице между два, но в основном вызов instance требует, чтобы вы создавали экземпляр объекта, а static - нет. Исправление этой проблемы можно было бы сделать:

System.out.println("The car is a " + car.getMake() + ", the brand is " + car.getModel() + ", the price is $" + car.getPrice()); 

Как для изменения переменных вы должны использовать:

car.setMake("My New Car Make"); 

вместо:

Automobile.setMake("My New Car Make"); 

разницу между static и instance вы можете посмотреть here, here, и here.

+0

Когда у вас есть «Автомобильный автомобиль = новый автомобиль (« Lexus 2017 »,« RX », 43020.0D);», делает ли D после 43020 цену как двойную переменную? Кроме того, в моем задании используется использование переменных экземпляра, а не статических. Это не доходит до следующей главы. –

+0

Как насчет названий классов? Все в порядке? Автомобильный и автомобильный тестер? Через эти имена, знает ли программа, чтобы реализовать класс? –

+0

Символ 'd' или' D' означает, что этот номер имеет тип 'double', вы можете найти больше об этих типах идентификаторов [здесь] (https://docs.oracle.com/javase/tutorial/java/nutsandbolts /datatypes.html). Что касается использования статических переменных экземпляра vs, я указывал, что вы использовали статические вызовы, где вы должны использовать вызовы экземпляров. Что касается имен, вы можете действительно использовать все, что захотите, если они набраны точно так же, он должен иметь возможность правильно создать экземпляр класса [IDE] (https://en.wikipedia.org/wiki/Integrated_development_environment) может помочь с этим. –

0

Вы сделали это правильно. Вы получили доступ к этому методу с использованием переменной экземпляра make класса Automobile.

(примечание стороны: сделать плохое имя для экземпляра автомобиля, а называют его car1, или что-то)

Automobile make = new Automobile("Lexus 2017"); 
System.out.println("The car is " + make.getMake()); 

Теперь везде, что вы используете Automobile.someMethod(), что это не правильно, потому что вам нужно установить или получить данные по одному экземпляру класса, а не всему классу.

Затем, наконец, вам нужно проверить конструктор с тремя параметрами, которые у вас есть в этом классе.

+0

Спасибо. «make» - это переменная экземпляра, которую мой профессор хочет использовать, но мне нужно создать два автомобильных объекта, чтобы car1, car2, работали?Использую ли я что-то вроде 'setMake (String newMake)'? И сделать это для каждой переменной экземпляра? –

+0

Я не говорю о 'String make', я говорю о' Automatible make = new Automobile (...) ', потому что это Automobile, у которого есть make, да, но не make make –

0

У вас возникла ошибка в вызове конструктора. Ваш конструктор принимает три параметра (марка, модель и цена), но когда вы вызываете метод, отправьте его только. Это ошибка. По умолчанию конструктор класса Java не имеет параметров (в вашем случае это будет «новый автомобиль()»). Для реализации тестера у вас есть два варианта. Во-первых, создать автомобиль с помощью конструктора без параметров, а затем установить параметры:

Automobile auto = new Automobile(); 
auto.setMake("Lexus 2017"); 
auto.setModel("RX"); 
auto.setPrice(43020); 

Automobile Automobile делают = новый автомобиль();

Другим вариантом является использование собственного строителя и передать параметры:

Automobile auto2 = new Automobile("Lexus 2017", "RX", 43020); 

Automobile.java:

public class Automobile { 
private String make; 
private String model; 
private double price; 

public Automobile() { 
} 

public Automobile(String make, String model, double price) { 
    this.make = make; 
    this.model = model; 
    this.price = price; 
} 

public String getMake() { 
    return make; 
} 

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

public String getModel() { 
    return model; 
} 

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

public double getPrice() { 
    return price; 
} 

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

AutomobileTester.java:

public class AutomobileTester { 

public static void main(String[] args) { 

    Automobile auto = new Automobile(); 
    auto.setMake("Lexus 2017"); 
    auto.setModel("RX"); 
    auto.setPrice(43020); 
    System.out.println("The car1 is " + auto.getMake() + " " + auto.getModel() + " " + auto.getPrice()); 

    Automobile auto2 = new Automobile("Lexus 2017", "RX", 43020); 
    System.out.println("The car2 is " + auto2.getMake() + " " + auto2.getModel() + " " + auto2.getPrice()); 

} 

}

+0

Не было бы автомобиль автомобиль марка = новый(); быть избыточным? Кроме того, я знаю, что вы используете эти параметры, когда хотите, чтобы параметры в методе равны переменным экземпляра. Когда вы не захотите их использовать? –

+0

Да, это ошибка. Это будет Automobile auto = new Automobile(); Если вы хотите использовать только несколько параметров, вы можете реализовать несколько конструкторов. Например, если вы только хотите использовать цену: public Automobile (double price) { this.price = price; } И звонок будет Automobile auto = new Automobile (1000); Или, если вы хотите использовать цену и модель: public Automobile (String model, double price) { this.model = model; this.price = цена; } И звонок будет: Автомобиль auto = новый Автомобиль («Rx», 1000); – Juan

Смежные вопросы