import java.util.Scanner;
/*Os motoristas se preocupam com a quilometragem dos seus automóveis. Um motorista monitorou
* vários tanques cheios de gasolina registrando a quilometragem dirigida e a quantidade de
* combustivel em litros utilizados p/ cada tanque cheio. Escreva um aplicativo Java que receba
* como entrada os quilômetros dirigidos e os litros de gasolinas consumidos(ambos como inteiros)
* para cada tanque cheio. O programa deve calcular e exibir o consumo em quilômetros/litro
* para cada tanque cheio e imprimir a quilometragem combinada e a soma total de litros de
* combustivel consumidos até esse ponto. Todos os cálculos de média devem produzir resultados de
* ponto flutuante. Utilize a classe Scanner e repetição controlada por sentinela p/ obter
* os dados do usuário.
* */
public class QuilometroPorLitro {
public static void main(String[] args) {
int quilometros = 0;
int litros = 0;
int consumo = 0;
double media = 0;
int totalQuilometros = 0;
int contador = 1;
Scanner entrada = new Scanner(System.in);
while (quilometros != -1) {
totalQuilometros = totalQuilometros + quilometros;
consumo = consumo + litros;
media = (double) quilometros / litros;
System.out.print("Quilômetros rodados ou -1 para sair:");
quilometros = entrada.nextInt();
System.out.print("Consumo de combustível ou -1 para sair:");
litros = entrada.nextInt();
if (quilometros > 0)
System.out.printf("Média do carro %d: %.2f KM/Litro\n", contador++,
(double) quilometros / litros);
}
System.out.printf("\nTotal de quilômetros rodados: %d\n",
totalQuilometros);
System.out.printf("Total de combustível gasto: %d\n", consumo);
System.out.printf("Quilômetros por litro: %.2f", media); // O Problema é aqui, essa instrução deveria gerar uma saida
//da média de todos os carros juntos e não de apenas 1 deles
}
}
[RESOLVIDO]Ajuda com um exercício!
6 Respostas
O erro está aqui: media = (double) quilometros / litros;
Aqui sempre vai acontecer isso…
Vc deve criar uma variável que armazene TODAS as médias e depois divida pelo número de carros contados.
E outra dica… de incremetação
quando vc incrementar, coloque +=. Por exemplo:
Quando você vai incrementar totalQuilometros, ao invés de repetir a variável depois do ==, faça assim: totalQuilometros += quilometros.
Tem o mesmo efeito e o código fica mais elegante. 
O erro está aqui:media = (double) quilometros / litros;Aqui sempre vai acontecer isso…
Vc deve criar uma variável que armazene TODAS as médias e depois divida pelo número de carros contados.E outra dica… de incremetação
quando vc incrementar, coloque +=. Por exemplo:
Quando você vai incrementar totalQuilometros, ao invés de repetir a variável depois do ==, faça assim: totalQuilometros += quilometros.
Tem o mesmo efeito e o código fica mais elegante.
![]()
Ah… só retificando o que eu disse… o erro está no fato de vc exibir no printf a variável media…
Está dando erro porque está faltando o caracter “+” na frente das variaveis que vc quer que mostre
System.out.printf("Total de combustível gasto: %d\n", +consumo);
System.out.printf("Quilômetros por litro: %.2f", +media);
Está dando erro porque está faltando o caracter "+" na frente das variaveis que vc quer que mostreSystem.out.printf("Total de combustível gasto: %d\n", +consumo); System.out.printf("Quilômetros por litro: %.2f", +media);
Não, cara... o código está certo... o System.out.printf() funciona igualzinho ao C.
A questão é que ele não está armazenando as médias obtidas carro a carro... apenas está sobrescrevendo a variável media e exibindo-a quando termina o loop...
ismaelsoj, blz cara??
Não sabia desse pequeno detalhe. É que só passe por cima, não vi a lógica detalhada, nem testei…
Mas como vc disse acima, está sobreescrevendo a varial média mesmo.
Vlw pela dica cara. 
O erro está aqui:media = (double) quilometros / litros;Aqui sempre vai acontecer isso…
Vc deve criar uma variável que armazene TODAS as médias e depois divida pelo número de carros contados.E outra dica… de incremetação
quando vc incrementar, coloque +=. Por exemplo:
Quando você vai incrementar totalQuilometros, ao invés de repetir a variável depois do ==, faça assim: totalQuilometros += quilometros.
Tem o mesmo efeito e o código fica mais elegante.
![]()
Ah… só retificando o que eu disse… o erro está no fato de vc exibir no printf a variável media…
Mudei o printf() para println e ficou na mesma!!!
Mais vou tentando aqui com a dica que vc deu sobre uma variável para armazenar as médias obtidas! Valeu…
Galera, consegui! O lance da variável para armazenar as médias resolveu a parada. Sobre incrementar com += é uma dica interessante, eu já estou familiarizado com este recurso oferecido pelo Java mais no entanto eu ainda não me acostumei a usa-lo( quando eu leio um código assim eu não acho legível ) , mais tenho que me acostumar pois o código fica muito mais elegante e certamente demonstra mais profissionalismo! Valeu galera…Obrigado mesmo…vou fechar o tópico mais tarde ok.