【问题标题】:Simulating a Car (Java)模拟汽车 (Java)
【发布时间】:2012-11-09 06:43:10
【问题描述】:

我正在做一个模拟汽车的项目。要求是通过给汽车加满燃料来证明汽车的运行,然后让汽车运行直到它没有更多的燃料 燃料。模拟以不同速度填充和运行汽车的过程。在汽车运行时,定期打印汽车的当前里程、油量和速度。

我编写了一些其他类来保存一些我将用来计算燃料、速度和里程的方法。我只是在如何让它像一辆真正的汽车一样工作方面遇到了一点麻烦,任何帮助都将不胜感激。

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--;
}

}

【问题讨论】:

  • 您的意思是两次发布 FuelGauge() 吗?我觉得其中一个应该是里程表()

标签: java car-analogy


【解决方案1】:

这是您的汽车模拟器应用程序的设计:

  • 将具有里程表读数、油箱内当前燃油等的 Car 类标识为实例变量。
  • 编写一个线程,该线程在每次迭代中以 100 毫秒左右的睡眠时间连续运行,并且在线程的运行方法中,您处理增加里程表读数和按一定比例减少燃料的逻辑。确保您的线程将运行直到油箱中的燃料大于 0。如果您可以仅在 cse 中引发事件或警报,则燃料低于某个常数。
  • 编写主类以在满油箱燃料(可能是 40 升常数)和里程表读数为 0 的情况下启动该类,然后启动线程。

希望这有帮助。

-KishoreMadina

【讨论】:

    【解决方案2】:

    好吧,这里有一些建议:

    • 启动汽车。
    • 从你的车道上拉出来;如果不需要,请开始开车
    • 如果您计划以固定速度行驶,您可以计算出骑行需要多长时间,并且只需使用循环来更新距离和燃料;否则,您可以将一组速度存储在数组中,使用循环,并在每次迭代中传递可变速度(这可能有点难以计算剩余的燃料量)



    希望这有助于激发灵感。

    【讨论】:

    • 感谢您的输入,我可能会尝试使用循环,让汽车保持恒定速度并显示燃油和里程。
    • 很好;如果您觉得有帮助,请对答案进行投票。谢谢。
    【解决方案3】:

    我更推荐你的汽车组件的 contains 与 isa 关系。

    class FuelGauge { ... }
    class Odometer { ...}
    
    class Vehicle { ... }
    
    class Car extends Vehicle
    {
       private FuelGauge fuelGauge = new FuelGauge();
       private Odometer odometer = new Odometer();
    
       ...
    }
    

    【讨论】:

    • 准确地说。除非 OP 认为“A car IS A Fuel Gauge”的想法是合理的
    猜你喜欢
    • 1970-01-01
    • 2020-01-23
    • 2011-01-04
    • 2021-11-16
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多