2014-10-07 1 views
-4

Ниже приведены инструкции и код для программы Java, которую я должен выполнить. Я застрял и не знаю, как продолжить. Я пытаюсь понять это. Я чувствую, что понятия не имею, что я делаю. Вся помощь, руководство и объяснение будут очень оценены.Конструктор конструктора и без аргумента?

Написать класс с именем Car, который имеет следующие поля:

yearModel: Поле yearModel является INT, который держит год модель автомобиля.

make: Поле make ссылается на объект String, который содержит марку автомобиля.

speed: Поле speed - это int, который поддерживает текущую скорость автомобиля.

Кроме того, класс должен иметь следующий конструктор и других методы:

Конструкторы: Один конструктор должен принять год модель автомобиля, марку, и скорость в качестве аргументов. Эти значения следует присваивать объектам yearModel, make и speed. Другой конструктор будет не имеет аргументов и назначит 0 в качестве модели года автомобиля и скорости и пустую строку ("") в качестве make.

Accessors: Соответствующие методы доступа должны получить значения, хранящиеся в yearModel, make и speed полей объекта.

Мутаторы: Соответствующие методы мутаторный должны хранить значения в объекта, yearModel, make и speed полей.

accelerate: Метод ускорения должен добавить 5 к полю speed каждый раз, когда он называется.

brake: Метод торможения должен вычесть 5 из поля speed каждый время, когда оно называется.

Продемонстрировать класс в программе, которая запрашивает у пользователя ввод данных , а затем создает объект Car. Затем он вызывает метод accelerate пять раз. После каждого вызова метода accelerate, получите текущий speed автомобиля и отобразите его. Затем вызовите метод brake пять раз. После каждого вызова метода brake получите текущий speed из автомобиль и отобразите его.

Вывод выполнения этой программы будет выглядеть подобно:

Enter the car's year model: 1965 
Enter the car's make: Mustang 
Enter the car's speed: 30 

Current status of the car: 
Year model: 1965 
Make: Mustang 
Speed: 30 

Accelerating... 
Now the speed is 35 

Accelerating... 
Now the speed is 40 

Accelerating... 
Now the speed is 45 

Accelerating... 
Now the speed is 50 

Accelerating... 
Now the speed is 55 

Braking... 
Now the speed is 50 

Braking... 
Now the speed is 45 

Braking... 
Now the speed is 40 

Braking... 
Now the speed is 35 

Braking... 
Now the speed is 30 

Это то, что я до сих пор:

public class Car { 

// Declaration of variables. 
private int yearModel; 
private String make; 
private int speed; 

// Constructor that accepts arguements. 
public static void acceptor(int yearModelIn, String makeIn, int speedIn){ 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Enter the car's year model: "); 
    yearModelIn = keyboard.nextInt(); 
    System.out.println("Enter the car's make: "); 
    makeIn = keyboard.next(); 
    System.out.println("Enter the car's speed: "); 
    speedIn = keyboard.nextInt(); 
} 

// Constructor that zeroes fields. 
public void zeroer() 
{ 
    yearModel = 0; 
    speed = 0; 
    make = (""); 
} 

// Accessor Methods 
public int getYearModel() 
{ 
    return yearModel; 
} 
public String getMake() 
{ 
    return make; 
} 
public int getSpeed() 
{ 
    return speed; 
}  

// Accelerate method for adding 5 to speed. 
public void Accelerate() 
{ 
    speed += 5;   
} 

// Brake method for reducing speed. 
public void Brake() 
{ 
    speed-=5; 
} 
+1

'Accessor' - просто причудливое слово для метода getter', а' Mutator' - для 'setter'. –

+0

"_I am stuck_" С чем? Какая часть не работает? – csmckelvey

+1

ваши конструкторы должны выглядеть как 'public Car (String whatever) {}' not "acceptor" или "zeroer" – tom

ответ

1

Во-первых, избавиться от метода acceptor, это не делаю то, что, по вашему мнению, должно ... Я бы, вероятно, тоже отказался от метода zeroer, так как он не предоставляет каких-либо полезных функций, кроме того, чтобы выкрутить вас

Конструкторы. Один конструктор должен принять модель года автомобиля, сделать и скорость в качестве аргументов. Эти значения должны быть присвоены полям yearModel, make и speed объекта. Другой конструктор не будет иметь никаких аргументов и будет назначать 0 в качестве модели автомобиля и скорости автомобиля, а пустую строку («»).

Для начала, вы пропустили это ...

public Car(int yearModel, String make, int speed) { 
    this.yearModel = yearModel; 
    this.make = make; 
    this.speed = speed; 
} 

Исходя из этого, вы можете создать экземпляр автомобиля ...

public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 
    System.out.println("Enter the car's year model: "); 
    int year = keyboard.nextInt(); 
    keyboard.nextLine(); 
    System.out.println("Enter the car's make: "); 
    String make = keyboard.nextLine(); 
    System.out.println("Enter the car's speed: "); 
    int speedIn = keyboard.nextInt(); 

    Car car = new Car(year, make, speedIn);   
} 

Затем, вам необходимо обратиться к соответствующим методам изменения и сообщить о состоянии, например ...

car.Accelerate(); 
System.out.println(car.getSpeed()); 

Consult свои заметки и учебники, когда вы застряли, например Providing Constructors for Your Classes и Passing Information to a Method or a Constructor

Вы могли бы также иметь чтения через Code Conventions for the Java TM Programming Language, он будет делать это проще для людей, чтобы читать ваш код и для вас, чтобы прочитать другие

+1

... и 'zeroer()' в то же время ... –

+0

+1 для программирования mad: D и ya btw bro я думаю, что он свежий в java, может быть, не так много идей :) – Krishna

+1

@Krishna Да, единственная причина, по которой я ответил на этот вопрос, - это то, что OP предпринял попытку, все немного немного пометки, надеюсь, они прочитают связанные учебники ... – MadProgrammer

0

В вашей структуре кодирования имеется небольшая ошибка.

класс Автомобиль не должен принимать входные данные, ваш объект автомобиля должен быть POJO, только геттеры и сеттеры.

так что ваш автомобиль будет выглядеть следующим образом

public class Car { 
    String model; 
    int make; 
    double speed = 0.0; 
    Car(int make, String model, double speed) { 
     this.make = make; 
     this.model = model; 
     this.speed = speed; 
    } 

    // then the getters and setters for speed, accelerate, decelerate 
} 

теперь вы получаете доступ к классу автомобилей из реализующего класса, говорят Гараж

public class Garage { 
    public static void main(String ar[]) { 
     // Now take your inputs here say model = Mustang, make = 1995 speed = 50 
     Car c = new Car(make, model, speed); 
     // and then a simple looping construct 
     for(int i = 0; i < 5; i ++) { 
      c.accelerate(); // please don't use capitals for method names, because they look like class names 
      System.out.println(c.getSpeed()); 
     } 
    } 
} 
0

Вот код для вашего reference.And удалить тот Церон и акцепторный метод.

импорт java.util.Scanner;

класс автомобилей общественного {

private int speed; 
private String make; 
private int yearModel; 

public int getSpeed() { 
    return speed; 
} 
public void setSpeed(int speed) { 
    this.speed = speed; 
} 
public String getMake() { 
    return make; 
} 
public void setMake(String make) { 
    this.make = make; 
} 
public int getYearModel() { 
    return yearModel; 
} 
public void setYearModel(int yearModel) { 
    this.yearModel = yearModel; 
} 

void accelarate(){ 
    this.setSpeed(this.getSpeed()+5); 
} 

void brake(){ 
    this.setSpeed(this.getSpeed() -5); 
} 

public Car(int yearModel,String make,int speed){ 
    this.speed = speed; 
    this.make =make; 
    this.yearModel = yearModel; 
} 


public static void main(String[] args) { 
    Scanner keyboard = new Scanner(System.in); 
     System.out.println("Enter the car's year model: "); 
     int yearModel = keyboard.nextInt(); 
     keyboard.nextLine(); 
     System.out.println("Enter the car's make: "); 
     String make = keyboard.nextLine(); 
     System.out.println("Enter the car's speed: "); 
     int speed = keyboard.nextInt(); 

    Car car = new Car(yearModel,make, speed); 

    //Accelerate 
    for(int i=0;i<5;i++){ 
     car.accelarate(); 
     System.out.println("speed after accelaration::"+car.getSpeed()); 
    } 

    //Brake 
    for(int i=0;i<5;i++){ 
     car.brake();; 
     System.out.println("speed after applying brake::"+car.getSpeed()); 
    } 

} 

}

0
public class Car { 

    private int yearmake; // Variable of your yearmake of car 
    private String model; // Variable of your car company 
    private int speed; // Variable of your car speed 

    // getter and setter method as the pojo class defines that will give getter and setter property for the every variable inside class as according to OP it wont let u change Variable directly 

    public String getModel() { 
     return model; 
    } 

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

    public int getSpeed() { 
     return speed; 
    } 

    public void setSpeed(int speed) { 
     this.speed = speed; 
    } 

    public int getYearmake() { 
     return yearmake; 
    } 

    public void setYearmake(int yearmake) { 
     this.yearmake = yearmake; 
    } 

    public Car(int speed) { 
     this.speed = speed; 
    } 
    // constructor which will accepts and initialize your car with data i mean class 
    public Car(int yearmake, String model, int speed) { 
     this.yearmake = yearmake; 
     this.model = model; 
     this.speed = speed; 
     System.out.println("Year Make " + yearmake); 
     System.out.println("Model " + model); 
     System.out.println("Speed " + speed); 

    } 
    // method of the making accelerate car by speed of 5 
    public int acclarate(int speed) { 
     speed = speed + 5; 
     System.out.println("Speed Acclarated " + speed); 
     return speed; 
    } 
    // method for reducing speed of 5 
    public int Breaking(int speed) { 
     speed = speed - 5; 
     System.out.println("Speed Breaking " + speed); 
     return speed; 
    } 
    // main method 
    public static void main(String[] args) { 
     // accept from user input 
     Scanner keyboard = new Scanner(System.in); 
     System.out.println("Enter the car's made year model: "); 
     int year = keyboard.nextInt(); 
     keyboard.nextLine(); 
     System.out.println("Enter the car's make Company: "); 
     String make = keyboard.nextLine(); 
     System.out.println("Enter the car's speed: "); 
     int speedIn = keyboard.nextInt(); 
     // initialize car model with constructor 
     Car c = new Car(year, make, speedIn); 

     //increasing speed with use of method and loop 
     for (int i = 0; i < 5; i++) { 
      int speedchange = c.acclarate(c.getSpeed()); 
      c.setSpeed(speedchange); 

     } 
     //decreasing speed according to your requriement with use of method and loop 
     for (int i = 0; i < 5; i++) { 
      int decreasedpeed = c.Breaking(c.getSpeed()); 
      c.setSpeed(decreasedpeed); 
     } 

    } 
} 

и может сделать это другой путь тоже :), но я предложу тоже, как сказал madprogrammer. узнать некоторые ОП и основные вещи :)

+0

Если вы можете объяснить «почему» (OP должен делать то, что вы говорите) и, возможно, предоставить некоторые ссылки, вы бы подняли это выше других ответов «copy-n-paste» ;) – MadProgrammer

+0

@MadProgrammer okey m редактирует это :) – Krishna