创建车辆程序

时间:2018-10-31 13:08:34

标签: java class methods

现在,我正在从一本Java电子书中执行一些任务,但是不幸的是,我被困住了。该程序的主要思想是创建一个Vehicle类,该类与一个测试程序一起可以增加,减少和破坏当前速度。

起始速度应为0。我希望用户指定汽车应行驶的速度(例如90 km / h)。达到速度后(在这种情况下为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?");

}

}

2 个答案:

答案 0 :(得分:0)

可能的想法是将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类,或者将两个整数都传递给您要加速的数量和最大速度的整数。

答案 1 :(得分:0)

首先,欢迎您使用Stack Overflow。

如果要让方法接受参数(参数),则必须在mehtod声明中声明所述参数和参数的类型:

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

您还询问软件设计:“组件(车辆)的用户或客户端是否应能够设置递增速度方法的增量值?” 。答案取决于所述组件的设计。如果您的方法将接受一个参数,那么该方法也许还应该验证输入值并建立前后条件。

希望这会有所帮助。