Java Ejercicios Básicos Condicional 4

Relación Nº 4: Ejercicios 9 y 10

Ejercicio 9:

Programa que lea por teclado tres números enteros H, M, S correspondientes a hora, minutos y segundos respectivamente, y comprueba si la hora que indican es una hora válida.

Supondremos que se leemos una hora en modo 24 Horas, es decir, el valor válido para las horas será mayor o igual que cero y menor que 24.

El valor válido para los minutos y segundos estará comprendido entre 0 y 59 ambos incluidos

/*
 * Programa java que lea tres números enteros H, M, S que contienen hora, minutos y
 * segundos respectivamente, y comprueba si la hora que indican es una hora válida.
 */
import java.util.*;
public class condicional1_16 {
    public static void main(String[] args) {
        int H,M,S;
        Scanner sc = new Scanner(System.in);
        System.out.print("Introduzca hora: ");
        H =  sc.nextInt();
        System.out.print("Introduzca minutos: ");
        M =  sc.nextInt();
        System.out.print("Introduzca segundos: ");
        S =  sc.nextInt();
        if(H>=0 && H<24 && M>=0 && M<60 && S>=0 && S<60)     
           System.out.println("Hora correcta");
        else
            System.out.println("Hora incorrecta");
    }
}
La instrucción que comprueba si la hora leída por teclado es correcta es:

if(H>=0 && H<24 && M>=0 && M<60 && S>=0 && S<60)      

Esta condición da como resultado true cuando la hora es mayor o igual a 0 y menor que 24, los minutos son mayores o iguales a 0 y menores que 60 y los segundos son mayores 0 iguales a cero y menores a 60.


Ejercicio 10:

Programa que lea una variable entera mes y compruebe si el valor corresponde a un mes de 30 días, de 31 o de 28. Supondremos que febrero tiene 28 días. Se mostrará además el nombre del mes. Se debe comprobar que el valor introducido esté comprendido entre 1 y 12.

/*
 * Programa java que lea una variable entera mes y compruebe si el valor corresponde
 * a un mes de 30 días. Se debe comprobar que el valor introducido esté
 * comprendido entre 1 y 12
 */
import java.util.*;
public class condicional1_17 {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int mes;
        System.out.print("Introduzca número de mes: ");
        mes =  sc.nextInt();
        if(mes < 1 || mes > 12) //se comprueba que el valor del mes es correcto
            System.out.println("Mes incorrecto");
        else{  //si el mes es correcto
            switch(mes){  //se muestra el nombre mediante una instrucción switch
                case 1: System.out.print("Enero");
                        break;
                case 2: System.out.print("Febrero");
                        break;
                case 3: System.out.print("Marzo");
                        break;
                case 4: System.out.print("Abril");
                        break;
                case 5: System.out.print("Mayo");
                        break;
                case 6: System.out.print("Junio");
                        break;
                case 7: System.out.print("Julio");
                        break;
                case 8: System.out.print("Agosto");
                        break;
                case 9: System.out.print("Septiembre");
                        break;
                case 10: System.out.print("Octubre");
                        break;
                case 11: System.out.print("Noviembre");
                        break;
                case 12: System.out.print("Diciembre");
                        break;
            }
            // mostrar si es un mes de 30, 31 0 28 días
            if(mes == 4 || mes == 6 || mes == 9 || mes == 11)       
               System.out.println(" es un mes de 30 días");
            else if(mes == 2)
                     System.out.println(" es un mes de 28 días");
                   else
                      System.out.println(" es un mes de 31 días");
        }
    }
}

13 comentarios:

  1. me puedesdecir la diferencia entre el uso de || y &&

    if(mes < 1 || mes > 12)

    if(caracter1<='9' && caracter1>='0')

    ResponderEliminar
  2. Antes que nada, ¡ felicitarte por esta maravillosa página ! y agradecerte la labor que estas haciendo.

    Al lío... En el ejercicio 9, como harías para que se quede la hora con el formato 00:00:00, ya que al introducir valores inferiores a 10 en vez de salir, por ejemplo, al introducir 09 horas, 07 minutos y 30 seg, sale 9:7:30, lo cual queda un poco feo.
    Si esta duda se resuelve en posteriores ejercicios, entonces no hace falta que te molestes en contestar.
    Gracias de antemano,
    Salud !

    ResponderEliminar
    Respuestas
    1. Hola, para hacer eso tienes que utilizar printf.
      System.out.printf("%02d:%02d:%02d",H,M,S);
      En esta entrada del blog se explica la instrucción printf y hay varios ejemplos.
      http://puntocomnoesunlenguaje.blogspot.com.es/2012/08/java-printf.html
      Un saludo y gracias por el comentario ;)

      Eliminar
  3. Una pregunta, me dejaron Diseñar un programa en el cual ,a partir de una fecha introducida por el teclado con el formato Dia,Mes y Año se obtenga la del dia siguiente,Ejemplo:
    Que si hoy es 20 11 2013 al ingresarlo ,nos diga que el dia siguiente es 21 11 2013, pueden ayudarme por fa?

    ResponderEliminar
  4. Buenas noches,en primer lugar Mil gracias por este blog ya que me esta viniendo de perlas...
    Ahora,tengo un par de dudas en relacion al ejercicio del switch:

    -Por que no puedo poner en case un numero de dos digitos?me sale error..
    -Solo me sale si el valor es incorrecto,si es correcto no sale nada :S
    os dejo el codigo por si alguien me puede ayudar..

    import java.util.*;
    public class EjerciciosEstCond2 {

    /**
    * @param args the command line arguments
    */

    public static void main(String[] args) {


    int mes;
    int a = 10;
    int b = 11;
    int c = 12;
    System.out.println("Introduzca el numero del mes: ");
    Scanner sc = new Scanner(System.in);
    mes = sc.nextInt();

    if (mes<= 12&&mes>=1) {

    switch (mes){
    case '1':
    System.out.println("Enero y tiene 31 dias");
    break;
    case '2':
    System.out.println("Febrero y tiene 28 dias");
    break;
    case '3':
    System.out.println("Marzo y tiene 31 dias");
    break;
    case '4':
    System.out.println("Abril y tiene 30 dias");
    break;

    case '5':
    System.out.println("Mayo y tiene 31 dias");
    break;
    case '6':
    System.out.println("Junio y tiene 31 dias");
    break;
    case '7':
    System.out.println("Julio y tiene 30 dias");
    break;
    case '8':
    System.out.println("Agosto y tiene 31 dias");
    break;
    case '9':
    System.out.println("Septiembre y tiene 30 dias");
    break;
    case 'a':
    System.out.println("Octubre y tiene 31 dias");
    break;
    case 'b':
    System.out.println("Noviembre y tiene 30 dias");
    break;
    case 'c':
    System.out.println("Diciembre y tiene 31 dias");
    break;
    } } else { System.out.println("Introduzca un valor correcto");

    }

    }

    }

    Muchas gracias!

    ResponderEliminar
    Respuestas
    1. Hola, el switch no te funciona porque estás poniendo los valores numéricos entre comillas simples en los case. Los case para comprobar un valor numérico van sin comillas: case 1, case 12, case 123, etc. Las comillas solo se ponen cuando se quiere comprobar si es un carácter: case 'a', case 'z', etc. Por eso no te permite números de dos cifras.

      Eliminar
  5. Bueenas! Muchas gracias por estos ejercicios. Una pagina muy buena, gracias a ella me es muy facil seguir las clases ^^. Una cosa, me podrian decir como han conseguido que introduciendo un numero del 1 al 12 el ordenador les reponda como "(mes) es un mes de 31 dias"?? No encuentro el porque. Graciaas!! Un saludoo!! ;D

    ResponderEliminar
    Respuestas
    1. Hola! No soy el autor de este maravilloso blog pero aún así creo poder ayudar, mira:
      // mostrar si es un mes de 30, 31 0 28 días
      if(mes == 4 || mes == 6 || mes == 9 || mes == 11)
      System.out.println(" es un mes de 30 días");
      else if(mes == 2)
      System.out.println(" es un mes de 28 días");
      else
      System.out.println(" es un mes de 31 días");
      }
      }
      }

      Si te fijas verás que ahí está la respuesta, si lo "traduces" entenderás mejor, sería algo así:
      Si el valor introducido (Mes) es igual a 4 (Abril), 6 (Junio), 9 (Septiembre) u 11 (Noviembre) mostrar el siguiente mensaje: "Es un mes de 30 días"
      De lo contrario verificar si no es 2 (Febrero), de ser así " es un mes de 28 días", y de no ser así todos los meses restantes (Casos) tienen 30 días.
      Básicamente compara el número introducido con los que están dentro del "if" de 31 días, si no coincide con ninguno pasa a la siguiente opción de 28 días y por último a la de 30 días. Espero hayas entendido, y aunque seguramente ya habrás resuelto tu duda espero este mensaje quede para responder futuras incógnitas del mismo tema. Saludos!

      Eliminar
    2. Gracias por responder el post man, seguro que sí ayudará a otros compañeros. Pues yo vengo practicando con los ejercicios de este blog :3, soy novato aún jeje.
      Saludos y gracias nuevamente!

      Eliminar
  6. int mes = Integer.parseInt(JOptionPane.showInputDialog("Ingrese numericamente el mes"));
    if (mes<1||mes>12) {
    System.out.println("No corresponde al mes");
    }else {
    switch (mes) {
    case 1:
    System.out.println("Enero");
    break;
    case 2:
    System.out.println("Febrero");
    break;
    case 3:
    System.out.println("Marzo");
    break;
    case 4:
    System.out.println("Abril");
    break;
    case 5:
    System.out.println("Mayo");
    break;
    case 6:
    System.out.println("Junio");
    break;
    case 7:
    System.out.println("Julio");
    break;
    case 8:
    System.out.println("Agosto");
    break;
    case 9:
    System.out.println("Septiembre");
    break;
    case 10:
    System.out.println("Octubre");
    break;
    case 11:
    System.out.println("Noviembre");
    break;
    case 12:
    System.out.println("Diciembre");
    break;

    default:
    break;
    }
    }
    if (mes==1||mes==3||mes==5||mes==7||mes==8||mes==10||mes==12) {
    System.out.println("El mes es de 31 dias");
    }else if (mes==4||mes==6||mes==9||mes==11) {
    System.out.println("El mes es de 30 dias");
    }else if(mes==2){
    System.out.println("El mes es de 28 dias");
    }else {
    System.out.println("se selecciono un mes invalido");
    }

    ResponderEliminar
  7. necesito programa de mes con for

    ResponderEliminar