Logica de consumo de combustivel

Pessoa recentemente eu tinha postado o mesmo problema só que não avia conseguido resolver o problema está dando numero negativos números totalmente fora de padrão.
Tive bastante ajuda da galera, mas não tava conseguindo resolver ainda.
Ai eu pensei comigo mesmo. Não eu tenho que entender o logica onde estou errando então hoje a noite eu peguei para fazer e conseguir fazer todos os métodos e atributos do mesmo jeito que pede o Enunciado, o problema agora e na minha lógica. Minha cabeça já está fervendo. kkk

Eu conseguir acrescentar o combustível igual está pedindo e a quilometragem, só que no pede para eu retornar quanto quilômetros já rodou e quanto resta de combustível no automóvel. Criei até atributos novos para achar o consumo por litro que foi um sucesso. Mas agora não tenho ideia de como fazer para ele me retorna tais valores como pede. Veja o Enunciado.

A partir do diagrama de classe abaixo, implemente, em código Java, a classe que represente o comportamento explicitado:

Automovel
quilometragem: double
combustivel: double
abastecer (litros)
trafegar (distancia, litros)
combustivelNoTanque()
quilometragemCarro()

ATRIBUTOS:
quilometragem: representa quantos km ?rodados? tem o automóvel
combustivel: representa quantos litros de combustível tem no tanque do automóvel

MÉTODOS:
abastecer (litros): acrescenta X litros ao tanque do automóvel
trafegar (distancia, litros): simula uma viagem, acrescentando X (distancia) à quilometragem do automóvel e consumindo X litros do tanque
combustivelNoTanque(): retorna a quantidade de combustível presente no automóvel
quilometragemCarro(): retorna a quilometragem do automóvel

Crie uma classe de teste (Principal), com o método main, e simule algumas viagens

Veja meu codigo

[code]public class Automovel
{
// Atributos
double quilometragem; // total de quilometragem
double combustivel; // total de combustivel
double km; // quantos quilometro gasto por litro

// métodos
void abastecer( double litros )
{
	combustivel += litros;
} // fim do método combustivel

void trafegar(double distancia, double litros)
{
	quilometragem += distancia; // Acresenta a distancia pecorrida
	km = quilometragem / combustivel; // cosumo de gasolina por litro
	
} // fim do método trafegar

double combustivelNoTanque(){
	
	return combustivel;	
	
} // fim do método combustivelNoTanque

double quilometragemCarro() {	
	return km;
} // fim do metodo quilometragemCarro

}[/code]

[code]
import java.util.Scanner;

public class Principal
{
// método principal inicia a execução do aplicativo Java
public static void main( String[] args )
{
// Criando um obejto
Automovel carro = new Automovel();

	// Cria um Scaner para obeter a entrada aparti de uma tela de comandos
	Scanner input = new Scanner( System.in );
	
	//Atributos
	double combustivel;
	double quilometragem;
	
	//Ler informação do usuario
	System.out.print(" Quanto Litros você deseja abaster?: ");
	combustivel = input.nextDouble(); // Armazenando o valor digitado na variavel criada
	
	System.out.print(" Informe qual será a distancia a ser pecorrida?: ");
	quilometragem = input.nextDouble(); // Armazenando o valor digitado na variavel criada
	
	//Passando os valores para nossa classe
	carro.abastecer( combustivel ); // Passando o valor digitado para meus atributos
	carro.trafegar( quilometragem, combustivel ); // Passando o valor digitado para meus atributos
	
	//Exibindo os dados
	System.out.println( carro.combustivelNoTanque() );
	System.out.println( carro.quilometragemCarro() );
} // fim do método main

} // fim da class Principal [/code]

OBS: se eu inserir 50 litros de combustível e 460km ele me retorna 50 litros no tanque e 9.2KM/L

Eu preciso que me retorne quanto combustível resta no tanque e quantos quilômetros gasto no total o carro tem.

cara…

foi vc quem fez? de verdade?
pq pela sua duvida, parece que não foi…

Quando vc faz:

  void trafegar(double distancia, double litros)  
    {  
        quilometragem += distancia; // Acresenta a distancia pecorrida  
        km = quilometragem / combustivel; // cosumo de gasolina por litro  
          
    } // fim do método trafegar  

vc repara que você não ‘diminui’ a quantidade de combustivel do tanque… deveria ter feito:

combustivel -= litros;

outra coisa … coloque o modificador de acesso nos métodos ’ public ’ …
vc ocultou… pq?sabe as consequencias disso? hehehe estude isso ae…

abraços e sucesso

faltou colocar private nos atributos tb :slight_smile:

Sim esse programa foi eu quem o fiz!
Não entedi a pergunta se foi eu quem o fez?
Porque minha pergunta foi tão boba?
Ou meu programa está muito ruim?
Não conheço encapsulamento ainda não e nem muito de construtores. Pois vai ser matéria da próxima aula.
Eu comprei o Livro do Deitel Java como programar 8 edição então li alguns capitlo e tentei fazer algo com o conhecimento adquirido.
Voltando ao problema está dando erro veja;

se eu fizer assm ele me retorna tudo zero. Pois como eu criei um objeto ele instancia meus atributos

[code]void trafegar(double distancia, double litros)
{
quilometragem += distancia; // Acresenta a distancia pecorrida
//km = quilometragem / combustivel; // cosumo de gasolina por litro
combustivel -= litros;

} // fim do método trafegar[/code]

Agora seu eu fizer assim ele me retorna litros 0.0 e a quantidade gasta por litro certa

void trafegar(double distancia, double litros) { quilometragem += distancia; // Acresenta a distancia pecorrida km = quilometragem / combustivel; // cosumo de gasolina por litro combustivel -= litros; } // fim do método trafegar

Sei que posso esta parecendo inocente perguntando isso mas e que minhas ideias já não estão mais funcionando me ajude por gentileza obrigado por responder.

bom, parabens pelo estudo…
e preste bastante BASTANTE atenção nas aulas de POO . :slight_smile:
E parabens pelo desempenho :slight_smile:

Uma dica: não comente coisas obvias. :slight_smile:
Nao comente final de métodos…

bomm…
vou comentar agora só para vc saber…


double combustivel; //se essa variavel é o que tem no tanque e vc faz:

public void abastecer(double litros){
    combustivel +=litros;
}  //para adicionar gasolina no tanque..  

public void trafegar(...){
}//... vc também consome gasolina.. então tem que diminuir o valor daí [combustivel]. :)

alguns pontos que seria legal vc pensar:
-> Se eu tenho 5L de gasolina no tanque, eu posso ‘gastar’ 10L do tanque?

Interessante:
-> Se o tanque tem capacidade para 50L (e.g.), posso abastecer 100L?

Tipo… JUnit seria legal pra vc testar a sua lógica… pq nao aprende? mto facil…

Finalmente entendi onde eu estava errando, mas não sei como arruma sera que alguém pode me ajudar e resolver.

Agora sim eu sei, por que ele tava zerando o resultado, vou explicar como no minha classe eu tenho meus atributos criados e no meu programa principal eu tenho um objeto, e claro e evidente que se eu criar uma variável no main ele inicializa com lixo de memoria tipo o na linguagem C mas como todo objto que eu instancio ele ele por default começa zerado, exmplo o tipo string começa em null e int 0 float 0.0 e assim vai.

No meu programa ele ta calculando certo o problema e que no menu método combustivelNoTanque ele está pegando o atributo por isso ele retorna 0.0, eu tenho que pegar o valor da função trafegar mas não estou sabendo como.

[code]
public class Automovel
{
// Atributos
double quilometragem; // total de quilometragem
double combustivel; // total de combustivel

// métodos
void abastecer( double litros )
{
	combustivel += litros;
} // fim do método combustivel

void trafegar(double distancia, double litros)
{
	quilometragem += distancia; // Acresenta a distancia pecorrida
	combustivel -= litros;      // 
} // fim do método trafegar

double combustivelNoTanque(){
	
	return combustivel;
	
} // fim do método combustivelNoTanque

double quilometragemCarro() {	
	return quilometragem;
} // fim do metodo quilometragemCarro

}[/code]

import java.util.Scanner; 

public class Principal 
{
	// método principal inicia a execução do aplicativo Java
	public static void main( String[] args ) 
	{
		// Criando um obejto
		Automovel carro = new Automovel();
		
		// Cria um Scaner para obeter a entrada aparti de uma tela de comandos
		Scanner input = new Scanner( System.in );
		
		//Atributos
		double combustivel;
		double quilometragem;
		
		//Ler informação do usuario
		System.out.print(" Quanto Litros você deseja abaster?: ");
		combustivel = input.nextDouble(); // Armazenando o valor digitado na variavel criada
		
		System.out.print(" Informe qual será a distancia a ser pecorrida?: ");
		quilometragem = input.nextDouble(); // Armazenando o valor digitado na variavel criada
		
		//Passando os valores para nossa classe
		carro.abastecer( combustivel ); // Passando o valor digitado para meus atributos
		carro.trafegar( quilometragem, combustivel ); // Passando o valor digitado para meus atributos
		
		//Exibindo os dados
		System.out.println( "Ainda resta " + carro.combustivelNoTanque() + " Litros de combbustivel " );
		System.out.println( "Sua quilometragem é: " + carro.quilometragemCarro() + " KM " );
	} // fim do método main
} // fim da class Principal 

faz assim:

   double quilometragem = 0;
   double combustivel = 0;

depois vc faz as operações…

   Carro carro = new Carro();
    carro.abastecer(10);

Astesio,

Muito bom, parabéns também pela criação do objeto neste exercício, achei legal.