Foros aprenderaprogramar.com
Aprender a programar => C, C++, C#, Java, Visual Basic, HTML, PHP, CSS, Javascript, Ajax, Joomla, MySql y más => Mensaje iniciado por: LuisM en 25 de Octubre 2017, 15:32
-
Hola a todos !! Dejo a continuación el código Java del ejercicio propuesto. Desde ya, muchas gracias por la atención. Un saludo,
Luis
EJERCICIO
Supón que un partido de fútbol tiene una duración de 90 minutos. El minuto 1 se considera que abarca desde los 0 segundos hasta los 59 segundos. El minuto 2 abarca desde los 60 segundos hasta los 119 segundos. Así sucesivamente hasta el último minuto, que es el minuto 90 y abarca desde los 5340 segundos hasta los 5400 segundos. Crea un programa que pida al usuario el número de segundos transcurridos y mediante el uso de alguna función de redondeo (floor, ceil ó round) de la clase Math muestre el minuto en que nos encontramos. El programa debe pedir valores de segundos hasta que el usuario decida terminar.
Ejemplo de ejecución.
Introduzca valor de segundos: 32
El minuto es el 1
¿Otro valor (s/n)? s
Introduzca valor de segundos: 2595
El minuto es el 44
¿Otro valor (s/n)? n
------------------------------------------------
Clase CalculoDelMinuto - método main
public class CalculoDelMinuto
{
public static void main (String arg[]){
char respuesta = 's';
EntradaDeTeclado entrada = new EntradaDeTeclado();
while (respuesta=='s'){
System.out.println("Introduzca valor de segundos:");
entrada.pedirEntrada();
int segundos = Integer.parseInt(entrada.getEntrada());
if (segundos>0&&segundos<=5400){
double min = (double)segundos/60;
min = Math.ceil(min);
int minutos = (int) min;
System.out.println("Los minutos transcurridos en el partido son :"+minutos);
} else {System.out.println("Valor no válido"); }
System.out.println("¿Otro valor (s/n)?");
entrada.pedirEntrada();
respuesta=entrada.getEntrada().charAt(0);
}
}
}
Clase EntradaDeTeclado - ingreso de datos por consola
import java.util.Scanner; //Importación del código de la clase Scanner desde la biblioteca Java
// Definimos una clase EntradaDeTeclado aprenderaprogramar.com
public class EntradaDeTeclado {
private String entradaTeclado; //Variable de instancia (campo) de la clase
public EntradaDeTeclado () { //Constructor
entradaTeclado="";
// pedirEntrada(); //Esto es una llamada a un método interno. Al crear un objeto ejecutamos el método
} //Cierre del constructor
public void pedirEntrada () { //Método de la clase
Scanner entradaEscaner = new Scanner (System.in);
entradaTeclado = entradaEscaner.nextLine ();
} //Cierre del método pedirEntrada
public String getEntrada () { return entradaTeclado; } //Cierre del método getEntrada
public String getPrimeraPalabra () {
for (int i=0; i < entradaTeclado.length() - 1; i++) {
if (entradaTeclado.substring (i, i+1).equals(" ") ) { //IMPORTANTÍSIMO: COMPARAMOS CON EQUALS
return entradaTeclado.substring(0, i+1); }
}
return entradaTeclado; //Caso de que no se detecte ningún espacio devolvemos lo que haya
} //Cierre del método getPrimeraPalabra
public int getLongitud () { //Método de la clase
return entradaTeclado.length();
} //Cierre del método getLongitud
} //Cierre de la clase
-
Buenas LuisM, al ejecutar el programa he obtenido un resultado que no concuerda con lo que dice el enunciado. El enunciado dice "Supón que un partido de fútbol tiene una duración de 90 minutos. El minuto 1 se considera que abarca desde los 0 segundos hasta los 59 segundos. El minuto 2 abarca desde los 60 segundos hasta los 119 segundos. Así sucesivamente..."
Por tanto si introdujéramos 60 segundos debería decirnos minuto 2 pero sin embargo obtengo esto:
Introduzca valor de segundos:
32
Los minutos transcurridos en el partido son :1
¿Otro valor (s/n)?
s
Introduzca valor de segundos:
60
Los minutos transcurridos en el partido son :1
¿Otro valor (s/n)?
Otro problema que he encontrado es que el bucle de control no responde bien: cuando pide s/n si se pulsa intro, aparece un error java.lang.StringIndexOutBoundsException, esto no debería ocurrir.
Deberías revisar el código
Salu2