Deitel _ Capítulo 4_Instruções de controle : parte I

Galera é o seguinte, estou estudando para a prova SCJA.
E acho que a primeira coisa que devo fazer a revisar meus conceitos quanto ao Java, por isso estou lendo o livro Java como Programar e resolvendo o exercícios.Entretanto me deparei com o exercício abaixo e fiquei com dúvidas, pois achei o enunciado um tanto quanto bagunçado.
Segue abaixo o enunciado do exercício e o código desenvolvido por mim.

4.17 - Os motoristas se preocupam com o consumo de combustível de seus automóveis. Um motorista monitorou vários tanques cheios de gasolina registrando a quilometragem dirigida e a quantidade de combustível em litros utilizado para cada tanque cheio. Desenvolva uum aplicativo Java que receba como entrada os quilômetros dirigidos e os litros de gasolina consumidos (ambos como inteiros) paracada 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 combustível consumidos até este ponto. Todos os cálculos de médias devem produzir resultados em ponto flutuante. Utilize a class Scanner e repetição controlada por sentinela para obter os dados do usuário.

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package Cap4;

import java.util.Scanner;

/**
*

  • @author santosmm
    */
    public class Quilometragem {

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) {

      int quilometro;
      int litros;
      int total = 0;
      double media;

      Scanner input = new Scanner(System.in);

      System.out.println(“Entre com a quilometragem ou pressione -1 para sair”);
      quilometro = input.nextInt();
      System.out.println(“Entre com a quantidade de combustível consumida ou pressione -1 para sair”);
      litros = input.nextInt();

      if (quilometro != -1 || litros != -1) {
      while (quilometro != -1 || litros != -1) {
      System.out.println(“Entre com a quilometragem ou pressione -1 para sair”);
      quilometro = input.nextInt();
      System.out.println(“Entre com a quantidade de combustível consumida ou pressione -1 para sair”);
      litros = input.nextInt();
      total+=litros;
      }
      }

      if (quilometro != 0 || litros != 0) {
      media = (double) quilometro / litros;

       System.out.printf("O consumo em quilômetros/litros é de: %.2f\n ", media);
      

      } else {

       System.out.println("Nenhum número inserido");
      

      }

    }
    }

[/code]

Isso seria a solução???

Na verdade estou buscando a solução, entretanto não consegui compreender muito bem o enunciado.

O programa deve ficar em loop, até que o usuário decida sair.

A cada iteração, o usuário deve digitar a quantidade de quilômetros que percorreu com o tanque e a quantidade de litros que utilizou.

Isso deve ser armazenado.

Quando o usuário resolver sair, você deve exibir para cada tanque que ele utilizou, o consumo em Km/l. E também uma média.

Exemplo:

Tanque1, 300km, 30l
Tanque2, 200km, 25l
Tanque3, 700km, 60l

No final o programa vai mostrar:

Tanque1: 10Km/l
Tanque2: 8Km/l
Tanque3: 11.66Km/l

Média: 10.43 Km/l

Não é para mostrar a média total e sim por tanque.

Eis aqui o algoritimo:

crie um acumulador para quilômetro e um para litro
faça um loop infinito (afinal, são n tanques).
armazene os quilômetos (int)
acumule os quilômetros
armazene os litros consumidos (int)
acumule os litros
exiba a média do consumo do tanque n ( (double) quilometos / (double) litros )
quanto sair do loop infinito, imprima os dois acumuladores.

use diálogos JOptionPane para a entrada do usuário

[]´s

A média por tanque eu já tinha dito, mas no final, tem razão, não é pra mostrar a média geral e sim a quilometragem total e o consumo total.

O David respondeu de forma clara e precisa e ainda passou o algorítimo melhor que isso e só postar o código!!!
Bom trabalho

Se for igual ao que o pablosaraiva falou, vai ficar +/- assim:
(Eu resolvi assim)

[code]import java.util.Scanner;

public class ExemploDeitel {

/**
 * 
 * @author Pedro Henrique Fialho Santos 
 * (35) 34711521 or (35) 88054088
 * pedroh@inatel.br
 * 
 */

public static void main(String[] args) {

	Scanner input = new Scanner(System.in);
	System.out.println("Digite o numero de registros.");
	int quanti = input.nextInt();

	float[] kmltanques = new float[quanti];
	int[] quilometro = new int[quanti];
	int[] litros = new int[quanti];
	int litrototal = 0;
	double media;
	int quilometrototal = 0;

	int x = 0;
	int y=0;
	while (x < quanti) {
		y=x+1;
		System.out.println("Entre com a quilometragem  do tanque " + y);
		quilometro[x] = input.nextInt();
		System.out.println("Entre com a quantidade de combustível consumida");
		litros[x] = input.nextInt();
		kmltanques[x] = quilometro[x] / litros[x];
		x++;
	}

	x = 0;
	y=0;
	System.out.println("");
	while (x < quanti) {
		y=x+1;
		quilometrototal = quilometrototal + quilometro[x];
		litrototal = litrototal + litros[x];

		System.out.println("Tanque" + y + ": " + quilometro[x] + "km e "
				+ litros[x] + "litros = " + kmltanques[x] + "km/l");
		x++;
	}

	media = (double) quilometrototal / litrototal;
	
	System.out.println("Total de quilometros: " + quilometrototal + "KM");
	System.out.println("Total de litros: " + litrototal + "L");
	System.out.printf("A média é de: %.2f\n ",media);
}

}[/code]

A saída ficou assim:
Tanque1: 300km e 30litros = 10.0km/l
Tanque2: 200km e 25litros = 8.0km/l
Tanque3: 700km e 60litros = 11.0km/l
Total de quilometros: 1200KM
Total de litros: 115L
A média é de: 10,43

Galera,

Seguinte consegui desenvolver um código para resolver o problema do exercício.
Mas ainda não estou satisfeito, pois para parar a execução do meu programa o usuário tem que inserir -1 em quilômetros e em litros também.Estava querendo que ao inserir -1 em quilômetros ou em litros a execução do programa parasse imediatamente e o resultado fosse exibido.

Obrigado pelo algoritmo davidbuzatto!
E aos por ajudarem também com suas opiniões.

[code]/*

  • To change this template, choose Tools | Templates
  • and open the template in the editor.
    */
    package Cap4;

import java.util.Scanner;

/**
*

  • @author santosmm
    */
    public class Quilometragem {

    /**

    • @param args the command line arguments
      */
      public static void main(String[] args) {

      int quilometro;
      int litros;
      int quilometro_total = 0;
      int litros_total = 0;
      double media;

      Scanner input = new Scanner(System.in);

      System.out.println(“Entre com a quilometragem dirigida.”);
      quilometro = input.nextInt();
      if (quilometro != 0 && quilometro != -1) {
      quilometro_total += quilometro;
      }
      System.out.println(“Entre com a quantidade de combustível consumido.”);
      litros = input.nextInt();
      if (litros != 0 && litros != -1) {
      litros_total += litros;
      }

      if (quilometro != 0 && litros != 0) {
      if (quilometro != -1 && litros != -1) {
      media = (double) quilometro / litros;
      System.out.printf("A média de quilômetros/litro é de %.2f\n ", media);
      }
      } else if (quilometro == 0 && litros == 0) {
      System.out.println(“Nenhum valor inserido.”);
      }

      while (quilometro != -1 && litros != -1) {
      System.out.println(“Entre com a quilometragem dirigida.”);
      quilometro = input.nextInt();
      if (quilometro != 0 && quilometro != -1) {
      quilometro_total += quilometro;
      }
      System.out.println(“Entre com a quantidade de combustível consumido.”);
      litros = input.nextInt();
      if (litros != 0 && litros != -1) {
      litros_total += litros;
      }

       if (quilometro != 0 && litros != 0) {
           if (quilometro != -1 && litros != -1) {
               media = (double) quilometro / litros;
               System.out.printf("A média de quilômetros/litro é de %.2f\n ", media);
           }
       } else if (quilometro == 0 && litros == 0) {
           System.out.println("Nenhum valor inserido.");
       }
      

      }
      System.out.printf(“O valor da quilometragem combinada é %d e a soma total de litros de combustível consumidos é %d\n”, quilometro_total, litros_total);

    }
    }

[/code]

E então alguma sugestão?