_____________________________________________________________________________________
SOLUCIÓN:
Éste programa es innecesariamente más largo de lo que puede hacerse. La clase Deitel_4_17 simplemente calcula y retorna el cociente de kilómetros/galones. Ésto se puede incluir en la instrucción
System.out.printf("\nLos kilometros por galon fueron: %.2f: ", miObjeto.Procesa_Datos(galon, kilometros));
para quedar como:
System.out.printf("Los kilometros por galon fueron: %.2f", kilometros/galon);
Sin embargo, en estos primeros programas es más importante a realizar programas modulares que hacerlos eficientes. Un programa monolítico es, en general, más rápido que uno modular, sin embargo, los programas modulares son más fáciles de entender y mantener.
Éste código debe guardarse con el nombre UsaDeitel_4_17.java
////////////////////////////////////////////////////////////////////////// // // // Este programa recibe, mediante un ciclo controlado por centinela, // // el numero de galones y el numero de kilometros recorridos por cada // // galon. Imprime cada vez el rendimiento kilometros/galon // ////////////////////////////////////////////////////////////////////////// import java.util.Scanner; public class UsaDeitel_4_17 { // Abre clase UsaDeitel_4_17 public static void main(String args[]) { // Abre metodo main Scanner entrada = new Scanner(System.in); double galon = 0; double kilometros; Deitel_4_17 miObjeto = new Deitel_4_17(); System.out.println("\nIntroduzca el numero de galones: (-1 para terminar)\n"); galon = entrada.nextDouble(); while ( -1 != galon) { // Abre while System.out.println("\nIntroduzca el numero de kilometros: \n"); kilometros = entrada.nextDouble(); System.out.printf("\nLos kilometros por galon fueron: %.2f: ", miObjeto.Procesa_Datos(galon, kilometros)); System.out.println("\nIntroduzca el numero de galones: (-1 para terminar) \n"); galon = entrada.nextDouble(); } // Cierra while } // Cierra metodo main } // Cierra clase UsaDeitel_4_17
Éste código debe de guardarse con el nombre Deitel_4_17.java
public class Deitel_4_17 { // Abre clase Deitel_4_17 public double Procesa_Datos( double gl, double km) { // Abre metodo Procesa_Datos double promedio = km/gl; return promedio; } // Cierra metodo Procesa_Datos } // Cierra Deitel_4_17
______________________________________________________________
Esta entrada es parte de los problemas resueltos del libro Java. Cómo Prgramar de P. Deitel y H. Deitel
Entrada Anterior
Entrada Siguiente
No entiendo como crear las primras innstrucciones las del retorno kilómetros/galones
ResponderEliminar¡Hola! Lo que comento acerca de esas primeras líneas es que, en realidad es innecesaria la clase Deitel_4_17, ya que podrías no llamarla, y hacer todo en
EliminarUsaDeitel_4_17, cambiando la línea
System.out.printf("\nLos kilometros por galon fueron: %.2f: ", miObjeto.Procesa_Datos(galon, kilometros));
System.out.printf("Los kilometros por galon fueron: %.2f", kilometros/galon);
Pero, tal como aparece el programa, lo puedes copiar y ejecutar, está bien.
Entonces copiando el programa todo se ejecutara bien o puede fallar
ResponderEliminarEstimados amig@s aqui les presento otra posible solucion:
ResponderEliminar// Ejercicio 4.17: KilometrosLitro.java
// Calcula la cantidad de kilometros recorridos por litro
import java.util.Scanner;
public class KilometrosLitro
{
public void calcularKilometroLitro()
{
// crea objeto Scanner para obtener los kilometros y
// la cantidad de gasolina de la ventana de comandos
Scanner entrada = new Scanner( System.in );
// inicializamos las variables
int totalKilometros = 0;
int totalGasolina = 0;
int contadorRegistros = 0;
int cantKilometros;
int cantGasolina;
double promedio;
// pedir entrada para leer kilometros
System.out.print( "Introduzca la cantidad de kilometros conducidos (-1 para cancelar): ");
cantKilometros = entrada.nextInt();
// itera hasta obtener el valor centinela
while ( cantKilometros != -1)
{
System.out.print( "Introduzca la cantidad de gasolina utilizada: ");
cantGasolina = entrada.nextInt();
System.out.printf("\nLa cantidad de kilometros por litro para este reabastecimiento es: %.2f Km/Lt.\n\n",
(double) cantKilometros/cantGasolina );
totalKilometros += cantKilometros;
totalGasolina += cantGasolina;
contadorRegistros++;
System.out.print( "Introduzca la cantidad de kilometros conducidos (-1 para cancelar): ");
cantKilometros = entrada.nextInt();
} // fin while
if ( contadorRegistros != 0 )
{
promedio = (double) totalKilometros / totalGasolina;
System.out.printf( "\nSe realizo un total de %d reabastecimiento, obteniendo un promedio de %.2f Kilometros/Litro.\n",
contadorRegistros, promedio );
} else {
System.out.println( "No se introdujeron registros." );
} // fin if..else
} // fin metodo calcularKilometrosLitro
} // fin clase KilometrosLitro
// Ejercicio 4.17: PruebaKilometrosLitro.java
// Calcula la cantidad de kilometros recorridos por litro
public class PruebaKilometrosLitro
{
// metodo main inicia la ejecucion de la aplicacion
public static void main(String[] args) {
// Creamos un objet KilometrosLitro
KilometrosLitro reabastecimiento = new KilometrosLitro();
reabastecimiento.calcularKilometroLitro();
} // fin metodo main
} // fin clase PruebaKilometrosLitro
// Esta es mi solución
ResponderEliminarimport java.util.Scanner;
public class Prueba {
public static void main(String[] args) {
int kilometros = 0;
int litros = 0;
int kilometrosTotales=0;
int litrosTotales=0;
double promedio=0;
Scanner in = new Scanner(System.in);
while (kilometros != -1 ) {
System.out.println("Introduzca numero de kilometros en su viaje si desea\n"+ "cancelar escriba -1");
kilometros = in.nextInt();
kilometrosTotales +=kilometros;
System.out.println("Introduzca numero de litros en su viaje");
litros = in.nextInt();
litrosTotales += litros;
promedio = kilometros/litros;
System.out.println("Los kilometros por litro de este viaje son:"+ promedio);
}
promedio = litrosTotales /kilometrosTotales;
System.out.println("El promedio kilometros por litro es:"+promedio);
}
}
yo lo había hecho así igual manera pero hasta que los dos valores
Eliminarsean -1 tanto km y lt , pregunta es: ¿eso está bien?