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");
        }
    }
}

21 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
    2. ¿Y en visual Basic? Help me

      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
  8. alguin sabe hacer figuras cuadros huecos con grosor porfas mi imperio soy novato

    ResponderEliminar
  9. tengo un problema necesito un algoritmo que me indique el numero del dia en el trayecto del año y no lo he podido conseguir lo tengo asi pero no sale mostandome al suma de los dias ejemplo si coloco 20 del mes 2 tendra que salir dia 51 del mes 2
    import java.util.Scanner;


    public class diadelaño {


    public static void main(String[] args) {
    Scanner lector=new Scanner(System.in);
    Scanner lectorCaracter=new Scanner(System.in);

    int dda=0,ndia=0;

    char nmes;

    System.out.println("ingrese mes ");
    nmes=lector.next().charAt(0);

    System.out.println("ingrese dia");
    dda=lector.nextInt();


    if (dda>=1 && dda<31){
    if (nmes>=1 && nmes<=12) {
    switch(nmes){
    case 1: dda=ndia;break;
    case 2: dda=(ndia+31);break;
    case 3: dda=(ndia+59);break;
    case 4: dda=(ndia+90);break;
    case 5: dda=(ndia+120);break;
    case 6: dda=(ndia+151);break;
    case 7: dda=(ndia+181);break;
    case 8: dda=(ndia+212);break;
    case 9: dda=(ndia+243);break;
    case 10: dda=(ndia+273);break;
    case 11: dda=(ndia+304);break;
    case 12: dda=(ndia+334);break;
    default:
    System.out.println("no se admite esa informacion");break;

    }
    }

    } else System.out.println("es el dia "+dda+ "del año");

    }

    }

    ResponderEliminar
  10. A mi me funciono de esta manera

    Scanner entrada = new Scanner(System.in);

    System.out.println("Introduce un mes en numero");
    int mes = entrada.nextInt();


    if (mes == 1){

    System.out.println("Enero");

    }else if (mes == 2){

    System.out.println("Febrero");

    }else if (mes == 3){

    System.out.println("Marzo");

    }else if (mes == 4){

    System.out.println("Abril");

    }else if (mes == 5){

    System.out.println("Mayo");

    }else if (mes == 6){

    System.out.println("Junio");

    }else if (mes == 7){

    System.out.println("Julio");
    }else if (mes == 8){

    System.out.println("Agosto");

    }else if (mes == 9){

    System.out.println("Septiembre");

    }else if (mes == 10){

    System.out.println("Octubre");

    }else if (mes == 11){

    System.out.println("Noviembre");

    }else if (mes == 12){

    System.out.print("Diciembre ");

    }else{
    System.out.println("Dato incorrecto");
    }

    if(mes <= 3 || mes <=6 || mes<=9) {

    System.out.println("tiene 28 dias");

    }else if(mes<=11){

    System.out.println("Tiene 30 dias");

    }else if(mes<=12) {

    System.out.println("Tiene 31 dias");

    }

    ResponderEliminar
  11. Primero debo felicitar por la pagina, la verdad es muy útil y ayuda muchísimo. Gracias!
    segundo les dejo la manera de como yo la hice por si a alguien le sirve.
    si ven algo mal avisen por favor!

    package ejerciciojavameses;

    import java.util.Scanner;

    public class EjercicioJavaMeses {

    public static void main(String[] args) {
    Scanner in = new Scanner(System.in);
    int mes;

    //Se usa un bucle Do While para determinar si el valor del mes es válido,
    //de lo contrario se seguirá pidiendo hasta ser correcto
    do {
    System.out.print("Ingres del 1-12 para indicar un mes: ");
    mes = in.nextInt();

    } while (mes <= 0 || mes > 12);

    //Dependiendo del mes ingresado se crea una variable de tipo String con
    //el mes al que corresponda y directamente se imprime con los dias que
    //tenga ese mes
    if (mes == 1) {
    String mes1 = "Enero";
    System.out.println("El mes de " + mes1 + " Tiene 31 días");
    }
    if (mes == 2) {
    String mes2 = "Febrero";
    System.out.println("El mes de " + mes2 + " Tiene 28 días");
    }
    if (mes == 3) {
    String mes3 = "Marzo";
    System.out.println("El mes de " + mes3 + " Tiene 31 días");
    }
    if (mes == 4) {
    String mes4 = "Abril";
    System.out.println("El mes de " + mes4 + " Tiene 30 días");
    }
    if(mes == 5){
    String mes5 = "Mayo";
    System.out.println("El mes de " + mes5 + " Tiene 31 días");
    }
    if(mes == 6){
    String mes6 = "Junio";
    System.out.println("El mes de " + mes6 + " Tiene 30 días");
    }
    if(mes == 7){
    String mes7 = "Julio";
    System.out.println("El mes de " + mes7 + " Tiene 31 días");
    }
    if (mes == 8) {
    String mes8 = "Agosto";
    System.out.println("El mes de " + mes8 + " Tiene 31 días");
    }
    if (mes == 9) {
    String mes9 = "Septiembre";
    System.out.println("El mes de " + mes9 + " Tiene 30 días");
    }
    if (mes == 10) {
    String mes10 = "Octubre";
    System.out.println("El mes de " + mes10 + " Tiene 31 días");
    }
    if (mes == 11) {
    String mes11 = "Noviembre";
    System.out.println("El mes de " + mes11 + " Tiene 30 días");
    }
    if(mes == 12){
    String mes12 = "Diciembre";
    System.out.println("El mes de " + mes12 + " Tiene 31 días");
    }

    }

    }

    ResponderEliminar
  12. Buenas tengo un problema si alguien me puede ayudar se lo agradecería mucho el problema es
    Escribir un programa que lea la hora del día en el formato: H M S (0 <= H < 24) (0 <= {M, S} < 60), e imprima esa misma hora un segundo después (para este ejercicio solo debe usarse una o más estructuras IF simples).


    ResponderEliminar
  13. Buenas tengo un problema me puede ayudar,

    Nesecito que cuando coloque el número entero 2021 este correcto y cuando sea otro número me salga incorrecto

    ResponderEliminar
  14. alguien me podria ayudar con este ejercicio. realice un algoritmo que determine cuantos hay en 5 horas usando los ciclos,cilo while,ciclo do while,ciclo for

    ResponderEliminar