mirror of
https://github.com/danbulant/introductionToProgramming
synced 2026-05-19 04:18:32 +00:00
39 lines
1.1 KiB
Java
39 lines
1.1 KiB
Java
public class HybridCar implements Vehicle {
|
|
/** liters */
|
|
double fuel;
|
|
/** km per liter */
|
|
final double fuelMileage;
|
|
double electricalEnergy;
|
|
/** km per el energy point */
|
|
final double electricityMileage;
|
|
|
|
HybridCar(double fuelMileage, double electricityMileage) {
|
|
this.fuelMileage = fuelMileage;
|
|
this.electricityMileage = electricityMileage;
|
|
}
|
|
|
|
@Override
|
|
public int getRemainingRange() {
|
|
return (int)(fuel * fuelMileage + electricalEnergy * electricityMileage);
|
|
}
|
|
|
|
@Override
|
|
public int drive(int kms) {
|
|
// km
|
|
var range = getRemainingRange();
|
|
// km
|
|
var toDrive = Math.min(kms, range);
|
|
// km
|
|
var rangeEl = (int)(electricalEnergy * electricityMileage);
|
|
// km
|
|
var toDriveEl = Math.min(toDrive, rangeEl);
|
|
// km
|
|
var toDriveGas = toDrive - toDriveEl;
|
|
// l = 1/(km/l) * km
|
|
var consumptionGas = 1./fuelMileage * toDriveGas;
|
|
var consumptionEl = 1./electricityMileage * toDriveEl;
|
|
fuel -= consumptionGas;
|
|
electricalEnergy -= consumptionEl;
|
|
return toDrive;
|
|
}
|
|
}
|