Logica de consumo de combustivel

7 respostas
Astesio

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

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

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.

7 Respostas

d34d_d3v1l

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

d34d_d3v1l

faltou colocar private nos atributos tb :slight_smile:

Astesio

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

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
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.

d34d_d3v1l

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…

Astesio

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.

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

faz assim:

double quilometragem = 0;
   double combustivel = 0;

depois vc faz as operações…

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

Astesio,

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

Criado 30 de agosto de 2012
Ultima resposta 27 de out. de 2012
Respostas 7
Participantes 3