
public class Carro {

	// quantidade de gasolina em litros no tanque
	private double gasLitros;
	
	// motor 1.0 ou 2.0
	private final double motor;
	
	// quantos km o carro faz por litro
	private final int eficiencia;
	
	// quantos km o carro já rodou desde a fabricação
	private double kmRodados;

	
	// carro sem gasolina, motor 1.0
	public Carro(){
		this(0, 1.0);            // chama o segundo construtor
	}
	
	// carro com gasolina e outro motor
	public Carro(int gasolina, double motor){
		gasLitros = gasolina;    // quantidade de gasolina no tanque
		this.motor = motor;      // tipo de motor
		eficiencia = (motor == 1.0) ? 15 : 12;
		kmRodados = 0.0;
	}
	
	
	// abastece o carro
	public void abastecer(int litros){
		gasLitros += litros;
		System.out.printf("\nCarro abasteceu %d litros.", litros);
	}
	
	
	// dirige o carro por vários n km
	public void dirigir(double km){
		System.out.printf("\nCarro vai percorrer %.2f Km ...", km);
		if (getGasolina() == 0)
			System.out.println("\nCarro sem gosolina!");
		else if ((eficiencia * getGasolina()) < km)
			System.out.printf("\nCarro não tem gasolina suficiente para percorrer %.2f Km", km);
		else {
			gasLitros -= km / eficiencia;
			kmRodados += km;
			System.out.printf("\nCarro precorreu %.2f Km", km);
		}
	}
	
	// retorna a quantidade de gasolina em litros no tanque
	public double getGasolina(){
		return gasLitros;
	}
	
    // retorna total de Km rodados
	public double getKmRodados(){
		return kmRodados;
	}
	
	
	// retorna o tipo de motor: 1.0 ou 2.0
	public double getTipoMotor(){
		return motor;
	}
	
	// retorna quantos km/litro o carro faz
	public int getEficiencia(){
		return eficiencia;
	}
	
	
	// Instancia e testa o carro
	public static void main(String[] args) {
		Carro carro = new Carro(10, 2.0);
		System.out.println("Gasolina no tanque: " + carro.getGasolina() + " litros");
		
		carro.abastecer(20);
		carro.dirigir(50);
		carro.dirigir(20);
		
		System.out.println("\n\nKm rodados: " + carro.getKmRodados());
		System.out.printf("Gasolina restante: %.2f litros.", carro.getGasolina());
		System.out.printf("\nEficiência do motor: %d Km/litro.", carro.getEficiencia());

	}

}
