Имитация автомобиля (Java)
Я работаю над проектом по моделированию автомобиля. Требования состоят в том, чтобы продемонстрировать работу автомобиля, заполнив его топливом, а затем запустить автомобиль, пока в нем не останется топлива. Смоделируйте процесс наполнения и запуска автомобиля на разных скоростях. Когда автомобиль работает, периодически распечатывайте текущий пробег автомобиля, количество топлива и скорость.
Я написал несколько других классов для хранения некоторых методов, которые я буду использовать для расчета расхода топлива, скорости и пробега. У меня просто есть небольшая проблема с тем, как я должен заставить его работать так, как это делает настоящая машина, любая помощь будет оценена.
public class FuelGauge {
protected double fuel;
public FuelGauge()
{
fuel = 0.0;
}
public double getFuel()
{
return fuel;
}
public void setFuel(double fuel)
{
this.fuel = fuel;
}
public void fuelUp()
{
if(fuel<18)
fuel++;
}
public void fuelDown()
{
if(fuel>0)
fuel--;
}
}
Открытый одометр класса расширяет FuelGauge {
private int mileage, mpg;
private int economy;
public int getMileage()
{
return mileage;
}
public void setMileage(int mileage)
{
this.mileage = mileage;
}
public int getMpg()
{
return mpg;
}
public void setMpg(int mpg)
{
this.mpg = mpg;
}
public void mileUp()
{
if(mileage<999999)
mileage++;
}
public void mileReset()
{
if(mileage>999999)
mileage = 0;
}
public void decreaseFuel(int fuel)
{
if(mileage == mpg)
fuelDown();
}
public int getEconomy()
{
return (int) (mileage/fuel);
}
public void setEconomy(int economy)
{
this.economy = economy;
}
}
Общественный автомобиль класса расширяет одометр {
private String name;
private int speed;
public Car()
{
name = "Car";
getMileage();
getMpg();
getEconomy();
getFuel();
}
public String getName()
{
return name;
}
public void setName(String name)
{
this.name = name;
}
public int getSpeed()
{
return speed;
}
public void setSpeed(int speed)
{
this.speed = speed;
}
public void increaseSpeed()
{
if(speed<=120)
speed++;
}
public void decreaseSpeed()
{
if(speed>0)
speed--;
}
}
3 ответа
Я бы больше порекомендовал отношение "содержит против" для компонентов вашего автомобиля.
class FuelGauge { ... }
class Odometer { ...}
class Vehicle { ... }
class Car extends Vehicle
{
private FuelGauge fuelGauge = new FuelGauge();
private Odometer odometer = new Odometer();
...
}
Ну, вот несколько советов:
- Заводить машину.
- Выйти со своей дороги; если это не нужно, начните движение
- Если вы планируете ехать с фиксированной скоростью, вы можете рассчитать, как долго будет выигрывать поездка, и просто использовать цикл для обновления расстояния и расхода топлива; в противном случае вы можете хранить набор скоростей в массиве, использовать цикл и передавать переменные скорости на каждой итерации (это может быть довольно сложно вычислить, сколько топлива осталось)
Надеюсь, что это помогает вдохновения.
Вот дизайн приложения вашего автосимулятора:
- Определите класс автомобиля, который будет иметь показания одометра, текущее топливо внутри бака и т. Д. В качестве переменных экземпляра.
- Напишите поток, который непрерывно работает с некоторым временем ожидания 100 миллис или около того для каждой итерации, и внутри метода запуска потока вы имеете дело с логикой увеличения показаний одометра и уменьшения топлива в некоторой пропорции. убедитесь, что ваша нить будет работать до тех пор, пока топливо в баке не станет больше 0. Если в случае, если вы можете поднять событие или сигнал тревоги только в том случае, если топливо ниже определенной константы.
- Напишите основной класс, чтобы начать класс с полным топливом в баке (может быть 40 литров в константу) и показаниями одометра до 0, а затем запустите поток.
Надеюсь, это полезно.
-KishoreMadina