/**
* 里程类
*/
public class Odometer {
/**
* 行驶里程(公里)
*/
private double distance;
/**
* 剩余燃油(升)
*/
private double fuelCapacity;
/**
* 燃油效率(升/百公里)
*/
private double fuelEfficiency;
/**
* 默认的初始油量
*/
private static final double MAX_FUEL_CAPACITY = 60;
/**
* 构造函数:初始化行驶里程为零,剩余燃油为60,燃油效率任意
*/
public Odometer() {
distance = 0;
fuelCapacity = MAX_FUEL_CAPACITY;
fuelEfficiency = Math.random() * 2;
}
/**
* 将行驶里程设置为零
*/
public void clearDistance() {
this.distance = 0;
}
/**
* 设置燃油效率
*
* @param fuelEfficiency
*/
public void setFuelEfficiency(double fuelEfficiency) {
this.fuelEfficiency = fuelEfficiency;
}
/**
* 设置剩余燃油
*
* @param fuelCapacity
*/
public void setFuelCapacity(double fuelCapacity) {
this.fuelCapacity = fuelCapacity;
}
/**
* 成员函数接收一段旅程的长度,将旅程长度添加总到行驶里程中,并根据燃油效率扣减剩余燃油;成员函数返回剩余燃油
*
* @param newDistance 旅程长度
* @return
*/
public void drive(double newDistance) {
if (fuelCapacity <= 0) {
System.out.println("油量不足,无法行驶");
return;
}
//根据燃油效率扣减剩余燃油
double surplusCapacity = fuelCapacity - newDistance * fuelEfficiency / 100;
if (surplusCapacity < 0) {
System.out.println("油量不足,无法行驶");
return;
}
this.fuelCapacity = surplusCapacity;
//将旅程长度添加总到行驶里程中
this.distance = this.distance + newDistance;
}
/**
* 返回剩余燃油可行驶里程
*
* @return
*/
public double getSurplusDistance() {
return fuelCapacity / fuelEfficiency * 100;
}
/**
* 获取里程
*
* @return
*/
public double getDistance() {
return distance;
}
/**
* 获取燃油量
*
* @return
*/
public double getFuelCapacity() {
return fuelCapacity;
}
/**
* 获取燃油效率
*
* @return
*/
public double getFuelEfficiency() {
return fuelEfficiency;
}
}
------------------------------------------------------------------------------------------------
/**
* 测试类
*/
public class Test {
public static void main(String[] args) {
Odometer odometer = new Odometer();
System.out.println("初始油量:" + odometer.getFuelCapacity() + "升");
System.out.println("初始里程:" + odometer.getDistance() + "公里");
System.out.println("初始燃油效率:" + odometer.getFuelEfficiency() + "升/百公里");
System.out.println("-------------------------------------");
double distance = 2.1;
System.out.println("行驶:" + distance + "公里");
odometer.drive(distance);
System.out.println("累计行驶:" + odometer.getDistance() + "公里");
System.out.println("剩余燃油量:" + odometer.getFuelCapacity() + "升");
System.out.println("剩余可行驶里程数:" + odometer.getSurplusDistance() + "公里");
System.out.println("-------------------------------------");
double distance2 = 1.2;
System.out.println("行驶:" + distance2 + "公里");
odometer.drive(distance2);
System.out.println("累计行驶:" + odometer.getDistance() + "公里");
System.out.println("剩余燃油量:" + odometer.getFuelCapacity() + "升");
System.out.println("剩余可行驶里程数:" + odometer.getSurplusDistance() + "公里");
System.out.println("-------------------------------------");
double newFuelCapacity = 30;
System.out.println("更改剩余燃油:" + newFuelCapacity + "升");
odometer.setFuelCapacity(newFuelCapacity);
System.out.println("更改后的剩余燃油:" + odometer.getFuelCapacity() + "升");
System.out.println("-------------------------------------");
double newFuelEfficiency = 1.5;
System.out.println("更改燃油效率:" + newFuelEfficiency + "升/百公里");
odometer.setFuelEfficiency(newFuelEfficiency);
System.out.println("更改后的燃油效率:" + odometer.getFuelEfficiency() + "升/百公里");
System.out.println("-------------------------------------");
System.out.println("设置行驶里程为0");
odometer.clearDistance();
System.out.println("行驶里程:" + odometer.getDistance() + "公里");
}
}
温馨提示:答案为网友推荐,仅供参考