现在,我正在从一本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?");
}
}
答案 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;
}
您还询问软件设计:“组件(车辆)的用户或客户端是否应能够设置递增速度方法的增量值?” 。答案取决于所述组件的设计。如果您的方法将接受一个参数,那么该方法也许还应该验证输入值并建立前后条件。
希望这会有所帮助。