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

Título: Java pequeño programa para calcular minuto de juego partido de fútbol CU00906C
Publicado 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

Código: [Seleccionar]
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

Código: [Seleccionar]
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
Título: Re:Java pequeño programa para calcular minuto de juego partido de fútbol CU00906C
Publicado por: Ogramar en 01 de Febrero 2018, 21:39
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