Создание автомобильной программы

Прямо сейчас я выполняю некоторые задачи из электронной книги на Java, которую я приобрел, и, к сожалению, я застрял. Основная идея этой программы - создать класс Vehicle, который вместе с тестовой программой может увеличивать, уменьшать и прерывать текущую скорость.

Начальная скорость должна быть 0. Я хочу, чтобы пользователь указал, с какой скоростью должен двигаться автомобиль (например, 90 км / ч). После достижения скорости (в данном случае 90) я хочу, чтобы программа спрашивала пользователя, хочет ли он уменьшить скорость до заданного значения, остаться на той же скорости или перейти на 0. Должно ли все это быть сделано в тестовой программе. , или это должно быть реализовано в классе Vehicle?

Я должен создать программу из следующего UML: https://i.stack.imgur.com/01fgM.png

Это мой код на данный момент:

public class Vehicle {
    int speed;

    //Constructor
    public Vehicle () {
        this.speed = 0;
    }

    public void increaseSpeed (int differenceInc) {
        this.speed += differenceInc;
    }

    public void decreaseSpeed (int differenceDec) {
        this.speed -= differenceDec;
    }

    public void brake() {

    }

    public int getSpeed () {
        return this.speed;
    }   
}

А это мой пустой тестовый класс.

public class VehicleTest {

public static void main(String[] args) {

    Vehicle golf = new Vehicle();

    //Speed which should be accelerated to:
    Vehicle myHybrid = new Vehicle();

    System.out.println("You've hit the given speed. Do you want to stay at this speed, break, or decrease to another given speed?");

}

}

Дело не в том, что я не понимаю аргументов и методов, я не являюсь носителем английского языка, поэтому иногда трудно объяснить, что я имею в виду. Я отредактировал свой пост, чтобы вы понимали, в чем именно мне нужна помощь.

jhndoe2 31.10.2018 14:26
1
1
802
2

Ответы 2

Вероятно, идея состоит в том, чтобы взять int вместо increaseSpeed(), чтобы вы могли увеличить скорость на это целое число. Также добавьте логику для достижения предела скорости в свой метод increaseSpeed.

Так...

public void increaseSpeed (int amount) {
    if (speed + amount < MAX_SPEED) {  // Where MAX_SPEED is a static final int of value 90
        this.speed += amount;
    } else {
        System.out.println("Max speed reached. Want to exceed (y/n)?");
        Scanner scanner = new Scanner(System.in);
        char c = scanner.next().charAt(0);
        if (c == 'y') {
            this.speed += amount;
        }
    }
}

Конечно, вы можете сделать то же самое для decreaseSpeed(). Не забудьте проверить, не приводит ли уменьшение скорости к отрицательной скорости (если только вы не считаете отрицательное значение скорости движением задним ходом.

Кстати, здесь у меня для простоты жестко запрограммирован MAX_SPEED. Это, конечно, зависит от дороги, по которой вы едете, поэтому, вероятно, лучше сделать это по-другому (например, класс Road, который включает определенные атрибуты данной дороги, или передав оба целых числа на нужную вам сумму. для ускорения и целое число для максимальной скорости).

Что ж, во-первых, добро пожаловать в Stack Overflow.

Если вы хотите, чтобы метод принимал аргументы (параметры), вы должны объявить указанные аргументы и типы аргументов в объявлении mehtod:

    public void increaseSpeed (int augmentValue) {
        this.speed += augmentValue;
    }

Вы также спрашиваете о разработке программного обеспечения: «должен ли пользователь или клиент компонента (транспортного средства) иметь возможность устанавливать значение увеличения для метода увеличения скорости?» . Ответ зависит от конструкции указанного компонента. Если ваш метод принимает аргумент, то, возможно, этот метод также должен проверять входное значение и устанавливать предварительные и последующие условия.

Надеюсь это поможет.

Другие вопросы по теме