Nivel 1: Condicionales básicos y comparaciones
Aprende a utilizar estructuras condicionales en Java para comparar números, cadenas de texto y tomar decisiones básicas con if y else
1) Pide un número por teclado e indica si es divisible entre 2 (resto = 0)..
- Versión con Scanner
import java.util.Scanner;
public class DivisibleApp {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("Introduce un numero");
int numero=sc.nextInt();
//Comprobamos si es divisible entre 2, es decir, si el resto de la division es 0
if (numero%2==0){
System.out.println("El numero "+numero+" es divisible entre 2");
}else{
System.out.println("El numero "+numero+" no es divisible entre 2");
}
}
}
- Versión con JOptionPane
import javax.swing.JOptionPane;
public class DivisibleApp {
public static void main(String[] args) {
String texto=JOptionPane.showInputDialog("Introduce un numero");
//Pasamos el String a int
int numero=Integer.parseInt(texto);
//Comprobamos si es divisible entre 2, es decir, si el resto de la division es 0
if (numero%2==0){
System.out.println("El numero "+numero+" es divisible entre 2");
}else{
System.out.println("El numero "+numero+" no es divisible entre 2");
}
}
}
2) Pide un número por teclado e indica si es positivo o negativo.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio04 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Dame un número entero");
int num = entrada.nextInt();
if (num<0) {
System.out.println("El número es negativo");
}else {
System.out.println("El número es positivo");
}
entrada.close();
}
}
3) Pide dos números e indica si son iguales o diferentes.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio02 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Dame el primer número entero");
int num1 = entrada.nextInt();
System.out.println("Dame el segundo número entero");
int num2 = entrada.nextInt();
if (num1==num2) {
System.out.println("Son iguales");
}else {
System.out.println(num1 + " no es igual a " + num2);
}
entrada.close();
}
}
4) Pide dos palabras por teclado e indica si son iguales o diferentes.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio13 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Dime la primera palabra");
String pal1 = entrada.nextLine();
System.out.println("Dime la segunda palabra");
String pal2 = entrada.nextLine();
if (pal1.equals(pal2)) {
System.out.println("Las palabras son iguale");
}else {
System.out.println(pal1 + " no es igual que " + pal2);
}
entrada.close();
}
}
Nivel 2: Comparación y ordenación de números
Practica estructuras condicionales en Java comparando números, detectando múltiplos y ordenando valores de mayor a menor
5) Pide dos números e indica si uno es múltiplo del otro.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio05 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Dame el primer número entero");
int num1 = entrada.nextInt();
System.out.println("Dame el segundo número entero");
int num2 = entrada.nextInt();
if (num1%num2==0) {
System.out.println(num2 + " es múltiplo de " + num1);
}else {
System.out.println(num2 + " no es múltiplo de " + num1);
}
entrada.close();
}
}
6) Pide dos números e indica cuál es el mayor, cuál es el menor o si son iguales.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio06 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Dame el primer número entero");
int num1 = entrada.nextInt();
System.out.println("Dame el segundo número entero");
int num2 = entrada.nextInt();
if (num1<num2) {
System.out.println(num1 + " es menor que " + num2);
}else if (num1>num2) {
System.out.println(num1 + " es mayor que " + num2);
}else {
System.out.println(num1 + " y " + num2 + " son números iguales iguales");
}
entrada.close();
}
}
7) Pide dos números y muéstralos ordenados de mayor a menor.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio07 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Dame el primer número entero");
int num1 = entrada.nextInt();
System.out.println("Dame el segundo número entero");
int num2 = entrada.nextInt();
if (num1<num2) {
System.out.println(num2 + ", " + num1);
}else {
System.out.println(num1 + ", " + num2);
}
entrada.close();
}
}
8) Pide tres números y muéstralos ordenados de mayor a menor.
public class Ejercicio08 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Dame el primer número entero");
int num1 = entrada.nextInt();
System.out.println("Dame el segundo número entero");
int num2 = entrada.nextInt();
System.out.println("Dame el tercer número entero");
int num3 = entrada.nextInt();
if (num1>num2 && num2>num3) {
System.out.println(num1 + ", " + num2 + ", " + num3);
}else if (num1>num3 && num3>num2) {
System.out.println(num1 + ", " + num3 + ", " + num2);
}else if (num2>num1 && num1>num3) {
System.out.println(num2 + ", " + num1 + ", " + num3);
}else if (num2>num3 && num3>num1) {
System.out.println(num2 + ", " + num3 + ", " + num1);
}else if (num3>num1 && num1>num2) {
System.out.println(num3 + ", " + num1 + ", " + num2);
}else {
System.out.println(num3 + ", " + num2 + ", " + num1);
}
entrada.close();
}
}
bNivel 3: Análisis y manipulación de números
Practica lógica condicional en Java analizando cifras, invirtiendo números y detectando números capicúa
9) Pide un número entre 0 y 9.999 e indica cuántas cifras tiene.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio09 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Dame un número entero entre 0 y 9.999");
int num = entrada.nextInt();
if (num<0) {
System.out.println("Solo números positivos");
}else if (num<10) {
System.out.println("El número es de una cifra");
}else if (num<100) {
System.out.println("El número es de dos cifras");
}else if (num<1000) {
System.out.println("El número es de tres cifras");
}else if (num<10000) {
System.out.println("El número es de cuatro cifras");
}else {
System.out.println("No puedes superar el número 9.999");
}
entrada.close();
}
}
10) Pide un número entre 0 y 99.999 y muéstralo con las cifras al revés.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio10 {
public static void main(String[] args) {
int num, u, d, c, um, dm;
Scanner entrada = new Scanner (System.in);
System.out.println("Dame un número entero entre 10 y 99.999");
num = entrada.nextInt();
if (num<10 && num>-1) {
System.out.println(num);
}else if (num<100) {
u = num%10;
num = num/10;
d = num%10;
System.out.println(u + "" + d);
}else if (num<1000) {
u = num%10;
num = num/10;
d = num%10;
num = num/10;
c = num%10;
System.out.println(u + "" + d + "" + c);
}else if (num<10000) {
u = num%10;
num = num/10;
d = num%10;
num = num/10;
c = num%10;
num = num/10;
um = num%10;
System.out.println(u + "" + d + "" + c + "" + um);
}else if (num<100000) {
u = num%10;
num = num/10;
d = num%10;
num = num/10;
c = num%10;
num = num/10;
um = num%10;
num = num/10;
dm = num%10;
System.out.println(u + "" + d + "" + c + "" + um + "" + dm);
}else {
System.out.println("El número es mayor a 99.999");
}
entrada.close();
}
}
11) Pide un número entre 0 y 99.999 e indica si es capicúa.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio11 {
public static void main(String[] args) {
int num, u=0, d=0, c=0, um=0, dm=0;
Scanner entrada = new Scanner (System.in);
System.out.println("Dame un número entero entre 0 y 99.999");
num = entrada.nextInt();
if (num<0) {
System.out.println("Introduce números positivos");
System.out.println("1");
}else if (num<10) {
System.out.println("El número no es capicúa");
System.out.println("2");
}else if (num<100) {
u = num%10;
num = num/10;
d = num%10;
if (d==u) {
System.out.println("El número es capicúa");
System.out.println("3");
}else {
System.out.println("El número no es capicúa");
System.out.println("4");
}
}else if (num<1000) {
u = num%10;
num = num/10;
d = num%10;
num = num/10;
c = num%10;
if (c==u) {
System.out.println("El número es capicúa");
}else {
System.out.println("El número no es capicúa");
}
}else if (num<10000) {
u = num%10;
num = num/10;
d = num%10;
num = num/10;
c = num%10;
num = num/10;
um = num%10;
if (um==u && c==d) {
System.out.println("El número es capicúa");
System.out.println("7");
}else {
System.out.println("El número no es capicúa");
}
}else if (num<100000) {
u = num%10;
num = num/10;
d = num%10;
num = num/10;
c = num%10;
num = num/10;
um = num%10;
num = num/10;
dm = num%10;
if (dm==u && d==um) {
System.out.println("El número es capicúa");
}else {
System.out.println("El número no es capicúa");
}
}else {
System.out.println("No se permiten números mayores a 99.999");
}
entrada.close();
}
}
Nivel 4: Condicional switch en Java
Aprende a utilizar la estructura switch en Java para seleccionar opciones, validar datos y mostrar resultados según distintos casos
12) Pide una nota entre 0 y 10 y muéstrala como: Insuficiente, Suficiente, Bien, Notable, Sobresaliente (según el rango).
Para este ejercicio utiliza el condicional switch.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio12 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Introduce tu nota del 1 al 10");
int nota = entrada.nextInt();
switch (nota) {
case 1:
case 2:
case 3:
case 4:
System.out.println("Insuficiente");
break;
case 5:
System.out.println("Suficiente");
break;
case 6:
System.out.println("Bien");
break;
case 7:
case 8:
System.out.println("Notable");
break;
case 9:
case 10:
System.out.println("Sobresaliente");
break;
default:
System.out.println("La nota no puede ser menor que 1 ni mayor a 10");
}
entrada.close();
}
}
13) Crea una aplicación que pida un día de la semana y diga si es laborable o no.
Para este ejercicio utiliza el condicional switch.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio13 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("A qué dia de la semana estamos");
String diaSemana = entrada.nextLine();
switch (diaSemana) {
case "lunes":
case "martes":
case "miercoles":
case "jueves":
case "viernes":
System.out.println("Este día es laborable");
break;
case "sabado":
case "domingo":
System.out.println("Este día no es laborable");
break;
default:
System.out.println("Este dia no está bien escrito");
}
entrada.close();
}
}
14) Realiza un programa que pida un número del 1 al 7 y muestre el día correspondiente de la semana correspondiente.
Si no está en ese rango, muestra un error.
Para este ejercicio utiliza el condicional switch.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio14 {
public static void main(String[] args) {
Scanner entrada=new Scanner (System.in);
System.out.println("Introduce un día de la semana, de forma numérica");
int num=entrada.nextInt();
switch (num) {
case 1:
System.out.println("Lunes");
break;
case 2:
System.out.println("Martes");
break;
case 3:
System.out.println("Miercoles");
break;
case 4:
System.out.println("Jueves");
break;
case 5:
System.out.println("Viernes");
break;
case 6:
System.out.println("Sabado");
break;
case 7:
System.out.println("Domingo");
break;
default: System.out.println("ERROR, el número no es correcto");
}
entrada.close();
}
}
15) Realiza un programa que pida un número del 1 al 12 e imprima cuántos días tiene ese mes.
Para este ejercicio utiliza el condicional switch.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio15 {
public static void main(String[] args) {
Scanner entrada=new Scanner (System.in);
System.out.println("Introduce un mes del año, de forma numérica");
int num=entrada.nextInt();
switch (num) {
case 1:
case 3:
case 5:
case 7:
case 8:
case 10:
case 12:
System.out.println("Este mes tiene 31 días");
break;
case 2:
System.out.println("Este mes tiene 28 días");
break;
case 4:
case 6:
case 9:
case 11:
System.out.println("Este mes tiene 30 días");
break;
default: System.out.println("ERROR, el número no es correcto");
}
entrada.close();
}
}
Nivel 5: Calculadora con switch
Practica el uso de switch en Java creando una calculadora básica con suma, resta, multiplicación, división, potencia y módulo
16) Crea un programa que pida dos números enteros y un signo aritmético (String).
Según el signo, realiza la operación y muestra el resultado en un cuadro de diálogo.
Signos disponibles:
- suma los dos operandos.
- resta los operandos.
- multiplica los operandos.
- divide los operandos, este debe dar un resultado con decimales (double)
- 1º operando como base y 2º como exponente.
- módulo, resto de la división entre operando1 y operando2.
Nota: en la división el resultado debe permitir decimales (double).
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio14 {
public static void main(String[] args) {
String simbolo;
int resultado;
Scanner entrada = new Scanner (System.in);
System.out.println("Dame el primer número");
int num1 = entrada.nextInt();
System.out.println("Dame el segundo número");
int num2 = entrada.nextInt();
simbolo = entrada.nextLine();
System.out.println();
System.out.println("Introdice el simbolo para realizar la operación correspondiente:"
+ " sumar +, resta -, multiplicar *, dividir /, potencia p y resto de la división %.");
simbolo = entrada.nextLine();
switch (simbolo) {
case "+":
resultado = num1+num2;
System.out.println("La suma es = " + resultado);
break;
case "-":
resultado = num1-num2;
System.out.println("La resta es = " + resultado);
break;
case "*":
resultado = num1*num2;
System.out.println("La multiplicación es = " + resultado);
break;
case "/":
resultado = num1/num2;
System.out.println("La división es = " + resultado);
break;
case "p":
resultado = (int)Math.pow(num1, num2);
System.out.println("La potencia es = " + resultado);
break;
case "%":
resultado = num1%num2;
System.out.println("E resto de la división es = " + resultado);
break;
default:
System.out.println("Esa operación no se puede realizar");
}
entrada.close();
}
}
Nivel 6: Validación de fechas y horas
Practica condicionales anidados en Java validando fechas, calculando el día siguiente y trabajando con horas, minutos y segundos
17) Pide día, mes y año de una fecha e indica si la fecha es correcta, suponiendo que todos los meses tienen 30 días.
(Si supera el año actual, también se considera incorrecta.)
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio15 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Qué día es?");
int dia = entrada.nextInt();
System.out.println("Qué mes es?");
int mes = entrada.nextInt();
System.out.println("Qué año es?");
int año = entrada.nextInt();
if (dia>0 && dia<=30) {
if (mes>0 && mes<=12) {
if (año>=0 && año<2025) {
System.out.println("La fecha es correcta " + dia + "/" + mes + "/" + año);
}else {
System.out.println("La fecha es incorrecta " + dia + "/" + mes + "/" + año);
}
}else {
System.out.println("La fecha es incorrecta " + dia + "/" + mes + "/" + año);
}
}else {
System.out.println("La fecha es incorrecta " + dia + "/" + mes + "/" + año);
}
entrada.close();
}
}
18) Pide día, mes y año y valida la fecha con meses de 28, 30 y 31 días (sin años bisiestos).
(Si supera el año actual, también se considera incorrecta.)
- Versión 1--------------------------------------------------------
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio16 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Qué día es?");
int dia = entrada.nextInt();
System.out.println("Qué mes es?");
int mes = entrada.nextInt();
System.out.println("Qué año es?");
int año = entrada.nextInt();
if (dia>0 && dia<29) {
if (mes==2) {
if (año>=0 && año<2026) {
System.out.println("La fecha " + dia +"/"+ mes +"/"+ año + " es correcta");
}else System.out.println("La fecha " + dia +"/"+ mes +"/"+ año + " no es correcta");
}else System.out.println("La fecha " + dia +"/"+ mes +"/"+ año + " no es correcta");
}else if (dia>=29 && dia<31) {
if (mes==4 || mes==6 || mes==9 || mes==11) {
if (año>=0 && año<2026) {
System.out.println("La fecha " + dia +"/"+ mes +"/"+ año + " es correcta");
}else System.out.println("La fecha " + dia +"/"+ mes +"/"+ año + " no es correcta");
}else System.out.println("La fecha " + dia +"/"+ mes +"/"+ año + " no es correcta");
}else if (dia>=29 && dia<32) {
if (mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12) {
if (año>=0 && año<2026) {
System.out.println("La fecha " + dia +"/"+ mes +"/"+ año + " es correcta");
}else System.out.println("La fecha " + dia +"/"+ mes +"/"+ año + " no es correcta");
}else System.out.println("La fecha " + dia +"/"+ mes +"/"+ año + " no es correcta");
}else {
System.out.println("La fecha " + dia +"/"+ mes +"/"+ año + " no es correcta");
}
entrada.close();
}
}
- Versión 2--------------------------------------------------------
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio16 {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.println("Qué día es?");
int dia = entrada.nextInt();
System.out.println("Qué mes es?");
int mes = entrada.nextInt();
System.out.println("Qué año es?");
int año = entrada.nextInt();
boolean añoValido = (año >= 0 && año < 2026);
boolean mesValido = (mes >= 1 && mes <= 12);
boolean diaValido = false;
if (mesValido && añoValido) {
if (mes == 2) {
diaValido = (dia > 0 && dia < 29);
} else if (mes == 4 || mes == 6 || mes == 9 || mes == 11) {
diaValido = (dia > 0 && dia < 31);
} else {
diaValido = (dia > 0 && dia < 32);
}
}
if (diaValido) {
System.out.println("La fecha " + dia + "/" + mes + "/" + año + " es correcta");
} else {
System.out.println("La fecha " + dia + "/" + mes + "/" + año + " no es correcta");
}
entrada.close();
}
}
- Versión 3--------------------------------------------------------
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio16 {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.println("Qué día es?");
int dia = entrada.nextInt();
System.out.println("Qué mes es?");
int mes = entrada.nextInt();
System.out.println("Qué año es?");
int año = entrada.nextInt();
if (año >= 0 && año < 2026) {
if (mes >= 1 && mes <= 12) {
if ((mes == 2 && dia > 0 && dia < 29) ||
((mes == 4 || mes == 6 || mes == 9 || mes == 11) && dia > 0 && dia < 31) ||
((mes == 1 || mes == 3 || mes == 5 || mes == 7 || mes == 8 || mes == 10 || mes == 12) && dia > 0 && dia < 32)) {
System.out.println("La fecha " + dia + "/" + mes + "/" + año + " es correcta");
} else {
System.out.println("La fecha " + dia + "/" + mes + "/" + año + " no es correcta");
}
} else {
System.out.println("La fecha " + dia + "/" + mes + "/" + año + " no es correcta");
}
} else {
System.out.println("La fecha " + dia + "/" + mes + "/" + año + " no es correcta");
}
entrada.close();
}
}
19) Pide una fecha correcta y muestra la fecha del día siguiente, suponiendo que todos los meses tienen 30 días.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio17 {
public static void main(String[] args) {
int dia, mes, año;
Scanner entrada = new Scanner (System.in);
System.out.println("Dime el día");
dia = entrada.nextInt();
System.out.println("Dime el mes");
mes = entrada.nextInt();
System.out.println("Dime el año");
año = entrada.nextInt();
if (dia>0 && dia<31 && mes>0 && mes<13 && año>=0) {
dia+=1;
if (dia==31) {
dia=1;
mes+=1;
if (mes==13) {
mes=1;
año+=1;
}
}
System.out.println("El día siguientes es: " + dia + "/" + mes + "/" + año);
}else {
System.out.println("La fecha introducida no es correcta");
}
entrada.close();
}
}
20) Pide una fecha correcta y muestra la fecha del día siguiente, considerando los días reales del mes (febrero = 28, etc.).
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio18 {
public static void main(String[] args) {
int dia;
int mes;
int año;
Scanner entrada = new Scanner (System.in);
System.out.println("Dime el día");
dia = entrada.nextInt();
System.out.println("Dime el mes");
mes = entrada.nextInt();
System.out.println("Dime el año");
año = entrada.nextInt();
if (dia>0 && dia<29 && mes==2 && año>=0) {
dia+=1;
if (dia==29) {
dia=1;
mes+=1;
System.out.println("El día siguientes es: " + dia + "/" + mes + "/" + año);
}else System.out.println("El día siguientes es: " + dia + "/" + mes + "/" + año);
}else if (dia>0 && dia<31 && mes==4 || mes==6 || mes==9 || mes==11 && año>=0) {
dia+=1;
if (dia==31) {
dia=1;
mes+=1;
System.out.println("El día siguientes es: " + dia + "/" + mes + "/" + año);
}else System.out.println("El día siguientes es: " + dia + "/" + mes + "/" + año);
}else if (dia>0 && dia<32 && mes==1 || mes==3 || mes==5 || mes==7 || mes==8 || mes==10 || mes==12 && año>=0) {
dia+=1;
if (dia==32 && mes<12) {
dia=1;
mes+=1;
System.out.println("El día siguientes es: " + dia + "/" + mes + "/" + año);
}else if (dia==32 && mes==12) {
dia=1;
mes=1;
año+=1;
System.out.println("El día siguientes es: " + dia + "/" + mes + "/" + año);
}else {
System.out.println("El día siguientes es: " + dia + "/" + mes + "/" + año);
}
}else {
System.out.println("La fecha introducida no es correcta");
}
entrada.close();
}
}
21) Pide dos fechas y muestra cuántos días de diferencia hay entre ellas, suponiendo que todos los meses tienen 30 días.
- Versión 1 sin método--------------------------------------------------------
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio19 {
public static void main(String[] args) {
int dia1, mes1, ano1, numDiasTotales1;
int dia2, mes2, ano2, numDiasTotales2;
Scanner entrada = new Scanner (System.in);
System.out.println("Dame el día de la primera fecha");
dia1 = entrada.nextInt();
System.out.println("Dame el mes de la primera fecha");
mes1 = entrada.nextInt();
System.out.println("Dame el año de la primera fecha");
ano1 = entrada.nextInt();
numDiasTotales1=dia1+((mes1-1)*30)+((ano1-1)*360);
System.out.println("Dame el día de la segunda fecha");
dia2 = entrada.nextInt();
System.out.println("Dame el mes de la segunda fecha");
mes2 = entrada.nextInt();
System.out.println("Dame el año de la segunda fecha");
ano2 = entrada.nextInt();
numDiasTotales2=dia2+((mes2-1)*30)+((ano2-1)*360);
if (numDiasTotales1>numDiasTotales2) System.out.println("La diferencia de días entre las dos fechas es de: "
+ (numDiasTotales1-=numDiasTotales2) + " días");
else System.out.println("La diferencia de días entre las dos fechas es de: "
+ (numDiasTotales2-=numDiasTotales1) + " días");
entrada.close();
}
}
- Versión 2 con método--------------------------------------------------------
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio19 {
public static void main(String[] args) {
int dia1, mes1, ano1, numDiasTotales1;
int dia2, mes2, ano2, numDiasTotales2;
Scanner entrada = new Scanner (System.in);
System.out.println("Dame el día de la primera fecha");
dia1 = entrada.nextInt();
System.out.println("Dame el mes de la primera fecha");
mes1 = entrada.nextInt();
System.out.println("Dame el año de la primera fecha");
ano1 = entrada.nextInt();
numDiasTotales1=dia1+((mes1-1)*30)+((ano1-1)*360);
System.out.println("Dame el día de la segunda fecha");
dia2 = entrada.nextInt();
System.out.println("Dame el mes de la segunda fecha");
mes2 = entrada.nextInt();
System.out.println("Dame el año de la segunda fecha");
ano2 = entrada.nextInt();
numDiasTotales2=dia2+((mes2-1)*30)+((ano2-1)*360);
/*El método abs() devuelve el valor absoluto de un número,
si es positivo lo deja igual pero si es negativo lo convierte a positivo*/
int diferencia = Math.abs(numDiasTotales1 - numDiasTotales2);
System.out.println("La diferencia de días entre las dos fechas es de: " + diferencia + " días");
entrada.close();
}
}
22) Pide una hora en formato hora/minutos/segundos y muestra la hora del segundo siguiente.
- Versión 1 --------------------------------------------------------
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio20 {
public static void main(String[] args) {
int seg, min, hora;
System.out.println("Dime la hora exacta: h:m:s");
Scanner entrada=new Scanner(System.in);
System.out.println();
System.out.println("Dame la hora");
hora=entrada.nextInt();
System.out.println("Dame los minutos");
min=entrada.nextInt();
System.out.println("Dame los segundos");
seg=entrada.nextInt();
entrada.close();
//Comprobamos que la hora es correcta y sumamos un segundo---------------------------------------------
if (hora>=0 && hora<=23 && min>=0 && min<=59 && seg>=0 && seg<59) {
//Comprobamos que la "h:m:s" es menor de 10 y le damos formato con "0"
if (hora<10 && min<10 && seg<9) System.out.println("Son las 0" + hora + ":0" + min + ":0" + (seg+=1));
else if (hora<10 && min<10) System.out.println("Son las 0" + hora + ":0" + min + ":" + (seg+=1));
else if (hora<10 && seg<9) System.out.println("Son las 0" + hora + ":" + min + ":0" + (seg+=1));
else if (min<10 && seg<9) System.out.println("Son las " + hora + ":0" + min + ":0" + (seg+=1));
else if (hora<10) System.out.println("Son las 0" + hora + ":" + min + ":" + (seg+=1));
else if (min<10) System.out.println("Son las " + hora + ":0" + min + ":" + (seg+=1));
else if (seg<9) System.out.println("Son las " + hora + ":" + min + ":0" + (seg+=1));
else System.out.println("Son las " + hora + ":" + min + ":" + (seg+=1));
//-----------------------------------------------------------------------------------------------------
//Cuando los seg son 59 reiniciamos a cero los seg y sumamos un minuto---------------------------------
}else if (hora>=0 && hora<=23 && min>=0 && min<59 && seg>=0 && seg==59) {
//Comprobamos que la "h:m:s" es menor de 10 y le damos formato con "0"
if (hora<10 && min<9) System.out.println("Son las 0" + hora + ":0" + (min+=1) + ":00");
else if (hora<10) System.out.println("Son las 0" + hora + ":" + (min+=1) + ":00");
else if (min<9) System.out.println("Son las " + hora + ":0" + (min+=1) + ":00");
else System.out.println("Son las " + hora + ":" + (min+=1) + ":" + "00");
//-----------------------------------------------------------------------------------------------------
//Cuando los seg y min son 59 los reiniciamos a cero y sumamos una hora--------------------------------
}else if (hora>=0 && hora<=23 && min>=0 && min==59 && seg>=0 && seg==59) {
//Comprobamos que la "h:m:s" es menor de 10 y le damos formato con "0"
if (hora<9) System.out.println("Son las 0" + (hora+=1) + ":00" + ":00");
else if (hora==23) System.out.println("Son las 00" + ":00" + ":00");
else System.out.println("Son las " + (hora+=1) + ":00" + ":00");
//-----------------------------------------------------------------------------------------------------
}else System.out.println("La hora no es correcta");
}
}
- Versión 2 simplificada--------------------------------------------------------
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio20_Alternativo {
public static void main(String[] args) {
int seg, min, hora;
Scanner entrada = new Scanner(System.in);
System.out.println("Dime la hora exacta: h:m:s");
System.out.println("Dame la hora");
hora = entrada.nextInt();
System.out.println("Dame los minutos");
min = entrada.nextInt();
System.out.println("Dame los segundos");
seg = entrada.nextInt();
entrada.close();
if (hora >= 0 && hora <= 23 && min >= 0 && min <= 59 && seg >= 0 && seg <= 59) {
// Sumamos un segundo
seg++;
if (seg == 60) {
seg = 0;
min++;
if (min == 60) {
min = 0;
hora++;
if (hora == 24) {
hora = 0;
}
}
}
// Mostramos la hora con ceros a la izquierda
System.out.printf("Son las %02d:%02d:%02d\n", hora, min, seg); // %02d significa: número entero (d), con al menos 2 dígitos, rellenando con ceros si hace falta.
} else {
System.out.println("La hora no es correcta");
}
}
}
Nivel 7: Casos prácticos con condicionales
Resuelve problemas prácticos con condicionales en Java aplicando reglas, precios, validaciones y decisiones según varios datos de entrada
23) Realiza un programa que calcule la aceptación de una solicitud según: edad, nota y sexo.
- Nota mínima: 5
- Edad mínima: 18
- Si sexo = M → POSIBLE
- Si sexo = F → ACEPTADA
- Otros casos -> NO ACEPTADA
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio23 {
public static void main(String[] args) {
//Pedimos los datos por consola
Scanner entrada=new Scanner(System.in);
//Pedimos nota
System.out.println("Dime tu nota");
double nota=entrada.nextDouble();
//Pedimos edad
System.out.println("Dime tu edad");
int edad=entrada.nextInt();
entrada.nextLine();
//Pedimos sexo
System.out.println("Tu sexo es 'm' o 'f'");
String sexo=entrada.nextLine();
//Controlamos los datos para ver si se acepta
if (nota>=5 && edad>=18) {
if (sexo.equalsIgnoreCase("m")) System.out.println("Posible");
else if (sexo.equalsIgnoreCase("f")) System.out.println("Aceptada");
else System.out.println("No aceptada");
}else System.out.println("No aceptada");
entrada.close(); //Cerramos el flujo
}
}
24) Una asociación de vinicultores fija un precio inicial por kilo de uva (1,10 €).
La uva puede ser de tipo A o B, y tamaño 1 o 2.
Reglas:
- Tipo A:
- tamaño 1 → +0,20 €
- tamaño 2 → +0,30 €
- Tipo B:
- tamaño 1 → +0,30 €
- tamaño 2 → +0,50 €
Calcula cuánto dinero recibirá un productor según tipo, tamaño y kilos entregados.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio24 {
public static void main(String[] args) {
final double PRECIO=1.10; //Precio del kilo de uva
double precioTotal = 0;
//Pedimo el tipo y tamaño de uva
Scanner entrada=new Scanner(System.in);
//Tipo de uva
System.out.println("Dime el tipo de uva");
String tipo=entrada.next();
//Tamaño de uva
System.out.println("Dime el tamaño de uva");
int tam=entrada.nextInt();
entrada.close();
//Controlamos el tipo y tamaño de uva
if (tipo.equalsIgnoreCase("A")) {
if (tam==1) {
precioTotal=PRECIO+0.20;
System.out.printf("El precio de la uva de tipo %s y tamaño %d es: %.2f€", tipo, tam, precioTotal);
}
else if (tam==2) {
precioTotal=PRECIO+0.30;
System.out.printf("El precio de la uva de tipo %s y tamaño %d es: %.2f€", tipo, tam, precioTotal);
}else System.out.println("El tamaño de uva no existe");
}else if (tipo.equalsIgnoreCase("B")) {
if (tam==1) {
precioTotal=PRECIO-0.30;
System.out.printf("El precio de la uva de tipo %s y tamaño %d es: %.2f€", tipo, tam, precioTotal);
}else if (tam==2) {
precioTotal=PRECIO-0.50;
System.out.printf("El precio de la uva de tipo %s y tamaño %d es: %.2f€", tipo, tam, precioTotal);
}else System.out.println("El tamaño de uva no existe");
}else System.out.println("El tipo de uva no existe");
}
}
25) Un colegio organiza un viaje. Calcula cuánto paga cada alumno y cuánto se paga a la empresa:
- 100 alumnos o más → 65€ por alumno
- Entre 50 y 99 → 70€ por alumno
- Entre 30 y 49 → 95€ por alumno
- Menos de 30 → el autobús cuesta 4000€ en total (se reparte entre alumnos)
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio25 {
public static void main(String[] args) {
int pago;
//Pedimos el número de alumnos que van al viaje
Scanner entrada=new Scanner(System.in);
System.out.println("Número de alumnos que van al viaje");
int numAlumnos=entrada.nextInt();
if (numAlumnos>=100) {
pago=numAlumnos*65;
System.out.println("Cada alumno paga 65€ y el viaje cuesta: " + pago + "€");
}else if (numAlumnos>=50 && numAlumnos<100) {
pago=numAlumnos*70;
System.out.println("Cada alumno paga 70€ y el viaje cuesta: " + pago + "€");
}else if (numAlumnos>=30 && numAlumnos<50) {
pago=numAlumnos*95;
System.out.println("Cada alumno paga 95€ y el viaje cuesta: " + pago + "€");
}else if (numAlumnos<30) {
pago=4000;
System.out.println("Cada alumno paga " + (4000/numAlumnos) + "€ y el viaje cuesta: " + pago + "€");
}
}
}
26) Una compañía telefónica cobra por minutos:
- primeros 5 minutos → 1€
- siguientes 3 minutos → 0,80€
- siguientes 2 minutos → 0,70€
- a partir del minuto 10 → 0,50€ por minuto
- si es domingo → impuesto 3%
- otro día:
- turno mañana → 15%
- turno tarde → 10%
Calcula el coste total de la llamada.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio26 {
public static void main(String[] args) {
//Declaramos las variables
double min;
double precio=0;
String turno;
String diaSemana="";
//Pedimos los datos por consola
Scanner entrada=new Scanner(System.in);
System.out.println("Cuantos minutos has hablado por teléfono?");
min=entrada.nextInt();
System.out.println("Qué día de la semna es?");
diaSemana=entrada.next();
//Controlomamos los datos obtenidos para calcular el precio de la llamada
if (diaSemana.equalsIgnoreCase("Domingo")) { //Controlamos el precio del min en domigo
if (min>0 && min<=5) precio=1+(1*0.03);
if (min>5 && min<=8) precio=1.8+(1.8*0.03);
if (min>8 && min<=10) precio=2.5+(2.5*0.03);
if (min>10) precio=3+(3*0.03);
System.out.println("El precio de la llamada es de " + precio + " €");
}else { //Controlamos el precio del min otro día
System.out.println("Que turno es, mañana o tarde?");
turno=entrada.next();
if (turno.equals("mañana")) { //Controlamos el precio del min en turno de mañana
if (min>0 && min<=5) precio=1+(1*0.15);
if (min>5 && min<=8) precio=1.8+(1.8*0.15);
if (min>8 && min<=10) precio=2.5+(2.5*0.15);
if (min>10) precio=3+(3*0.15);
System.out.println("El precio de la llamada es de " + precio + " €");
}else { //Controlamos el precio del min en turno de tarde
if (min>0 && min<=5) precio=1+(1*0.10);
if (min>5 && min<=8) precio=1.8+(1.8*0.10);
if (min>8 && min<=10) precio=2.5+(2.5*0.10);
if (min>10) precio=3+(3*0.10);
System.out.println("El precio de la llamada es de " + precio + " €");
}
}
entrada.close();
}
}
27) Pide un número del 1 al 6 (tirada de un dado) y muestra el número de la cara opuesta en letras.
Caras opuestas:
- 1 ↔ 6
- 2 ↔ 5
- 3 ↔ 4
Si el número no está entre 1 y 6: "ERROR: número incorrecto"
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio27 {
public static void main(String[] args) {
Scanner entrada=new Scanner (System.in);
System.out.println("Dame un úmero del dado del 1 al 6");
int num = entrada.nextInt();
System.out.println("El número del dado es " + num);
if (num==1) {
System.out.println("La cara opuesta es seis");
}else if (num==2) {
System.out.println("La cara opuesta es cinco");
}else if (num==3) {
System.out.println("La cara opuesta es cuatro");
}else if (num==4) {
System.out.println("La cara opuesta es tres");
}else if (num==5) {
System.out.println("La cara opuesta es dos");
}else if (num==6) {
System.out.println("La cara opuesta es uno");
}else if(num<=0){
System.out.println("El número no es correcto");
}
entrada.close();
}
}
28) Una empresa de transporte cobra por peso y zona:
Zonas y coste €/kg:
- América del Norte → 24,00€
- América Central → 20,00€
- América del Sur → 21,00€
- Europa → 10,00
- Asia → 18,00€
Si el paquete pesa más de 5 kg, no se transporta. Calcula el precio o muestra un mensaje de rechazo.
package ejercicios.condicionales;
import java.util.Scanner;
public class Ejercicio28 {
public static void main(String[] args) {
int pais;
double kilos;
double transporte;
Scanner entrada = new Scanner (System.in);
System.out.println("Introduce un país: \n \n1: América del Norte \n2: América del Central"
+ "\n3: América del Sur \n4: Europa \n5: Asia");
pais = entrada.nextInt();
System.out.println("Introduce los kilos de tu paquete");
kilos = entrada.nextInt();
if (kilos>0 && kilos<=5) {
switch (pais) {
case 1:
transporte = kilos*24;
System.out.println("El precio del transporte es de " + transporte + "€");
break;
case 2:
transporte = kilos*20;
System.out.println("El precio del transporte es de " + transporte + "€");
break;
case 3:
transporte = kilos*21;
System.out.println("El precio del transporte es de " + transporte + "€");
break;
case 4:
transporte = kilos*10;
System.out.println("El precio del transporte es de " + transporte + "€");
break;
case 5:
transporte = kilos*18;
System.out.println("El precio del transporte es de " + transporte + "€");
break;
default:
System.out.println("El país no es correcto");
}
}else {
System.out.println("No transportamos paquetes con " + kilos + " kilos");
}
entrada.close();
}
}