В качестве нового занятия я попросил сделать «класс», который напоминает функциональность автомобиля с использованием определенных требований.Как решить эти ошибки при проверке?
Класс должен использовать эти атрибуты:
state (int)
fuel (int)
maxspeed (int)
состояния являются следующим:
0 = turned off
1 = stopped
2 = accelerating
3 = not functional
4 = no fuel
Я должен создать следующие методы:
"accelerate", it should receive a number as speed
"brake"
"crash"
Теперь, валидация являются следующим образом:
The car can not accelerate if it is turned off (0), not functional (3), or no fuel (4).
It cannot accelerate more than maximum speed.
When there's a crash the car goes not functional (3)
Every time the car accelerates it loses 2 of fuel units
Теперь валидации могут показаться простыми, но почему-то у меня возникают проблемы с проверкой, когда автомобиль ускоряется или нет. В моем коде автомобиль продолжает ускоряться даже после аварии или без топлива. Он также изменяет состояние после аварии, выключается или когда без топлива.
Это мой код:
private int state;
private int fuel;
private int speed;
public car() // constructor
{
this.state = 1;
this.fuel = 30;
this.speed = 0;
int Maxspeed = 200;
}
public void setState(int state){
switch(state){
case 0:
this.state = 0;
this.speed = 0;
break;
case 1:
this.state = 1;
this.speed = 0;
break;
case 2 :
this.state = 2;
break;
case 3 :
this.state = 3;
this.speed = 0;
break;
case 4 :
this.state = 4;
this.speed = 0;
this.fuel = 0;
break;
}
}
public void accelerate(int v){
if(this.state == 0 || this.state == 3 || this.state == 4){
v = 0;
this.speed = v;
}
if(this.fuel != 0 && this.state != 4 || this.state != 3){
if(v > 200 || this.speed == 200){
if(this.fuel < 30){
this.speed = 200;
this.state = 2;
}
else{
this.speed = 200;
this.state = 2;
this.state -= 2;
}
}
else{
this.speed += v;
this.fuel -= 2;
this.state = 2;
}
}
}
public void Stop(){
while(this.state == 2){
this.speed = 0;
this.state = 1;
}
}
public void Crash(){
if(this.state == 2){
this.state = 3;
this.speed = 0;
}
}
}
Кроме того, он не просил об осуществлении, но как я мог бы сделать состояние видимым со строками, вместо цифр?
Я также прошу протестировать это, используя основную систему void, но я не совсем уверен, как сделать соединения. Любая помощь?
Состояние должно действительно быть перечислением. Если вы еще не должны использовать перечисления, по крайней мере объявите константы для своих состояний и используйте имена констант, а не 1, 2, 3, 4, 5: 'if (state == STOPPED)' намного яснее, чем 'if (state == 1)'. –
'public static void main (String [] args) {...}' является точкой входа для многих программ Java. Здесь начинается программа, а 'String [] args' - это любые аргументы командной строки, переданные в программу при ее запуске. В 'main()' вам нужно создать 'new Car();', а затем вызвать разные методы из класса 'Car'. Но теперь я должен спросить; если вы не используете метод 'main()', как вы используете свой код? –
@JBNizet Похоже, что PBRD довольно рано в своем первом курсе Java. Давайте не будем путать их с лучшими методами качества кода, прежде чем они даже поймут основы. –