Nivel 1: Primeros bucles con for y while
Aprende a utilizar bucles for y while en Java mostrando secuencias numéricas, tablas de multiplicar y repeticiones básicas
1) Muestra por consola los números del 1 al 100 (ambos incluidos) utilizando un bucle while.
package ejercicios.bucles;
public class Ejercicio01 {
public static void main(String[] args) {
int cont=1; //Variable que incrementa en cada vuelta del bucle
//Definimos el bucle e incluimos el 100
while (cont<=100) {
System.out.print(cont + " ");
cont++;
}
}
}
2) Muestra por consola los números del 1 al 100 (ambos incluidos) utilizando un bucle for.
package ejercicios.bucles;
public class Ejercicio02 {
public static void main(String[] args) {
//Definimos el bucle e incluimos el 100
for (int i=1; i<=100; i++) {
System.out.print(i + " ");
}
}
}
3) Pide al usuario un número N y muestra por pantalla todos los números del 1 al N (incluidos).
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio03 {
public static void main(String[] args) {
int num = 0;
Scanner entrada = new Scanner(System.in);
System.out.println("Introduce un numero");
num = entrada.nextInt();
for (int i = 1; i<=num; i++) {
System.out.print(i + " ");
}
entrada.close();
}
}
4) Muestra por pantalla los números del 100 al 0, disminuyendo de 7 en 7.
package ejercicios.bucles;
public class Ejercicio04 {
public static void main(String[] args) {
for (int i = 100; i>0; i-=7) System.out.print(i + " ");
}
}
5) Pide al usuario un número entre 0 y 10 y muestra por pantalla la tabla de multiplicar de ese número.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio05 {
public static void main(String[] args) {
Scanner entrada = new Scanner (System.in);
System.out.println("Dame un número de la tabla de múltiplicar de entre 0 y 10");
int num = entrada.nextInt();
int multi;
for (int i=1; i<11; i++) {
multi = num*i;
System.out.println(num + " * " + i + " = " + multi);
}
entrada.close();
}
}
Nivel 2: Bucles con validaciones y acumuladores
Practica bucles en Java trabajando con acumuladores, contadores, validaciones y operaciones repetitivas mediante entrada de datos por teclado
6) Pide números al usuario y muestra el cuadrado de cada uno. El programa terminará cuando se introduzca un número negativo.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio06 {
public static void main(String[] args) {
int num;
Scanner entrada = new Scanner (System.in);
System.out.println("Introduce un número positivo");
num = entrada.nextInt();
while (num>=0) {
double cuadrado = Math.pow(num, 2);
System.out.println("El cuadrado de " + num + " es " + cuadrado);
System.out.println("");
System.out.println("Introduce un número positivo");
num = entrada.nextInt();
}
entrada.close();
}
}
7) Pide números al usuario e indica si cada número es positivo o negativo. El programa terminará cuando se introduzca un 0.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio07 {
public static void main(String[] args) {
int num;
Scanner entrada = new Scanner (System.in);
System.out.println("Introduce un número");
num = entrada.nextInt();
while (num!=0) {
if (num>0) {
System.out.println("El número es positivo");
System.out.println("");
}else {
System.out.println("El número es negativo");
System.out.println("");
}
System.out.println("Introduce otro número");
num = entrada.nextInt();
}
System.out.println("El numero es " + num);
entrada.close();
}
}
8) Pide números al usuario hasta que introduzca un 0. Para cada número, indica si es par o impar.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio08 {
public static void main(String[] args) {
int num;
Scanner entrada = new Scanner (System.in);
System.out.println("Introduce un número");
num = entrada.nextInt();
while (num!=0) {
double resto = num%2;
if (resto==0) {
System.out.println("El número es par");
System.out.println("");
}else {
System.out.println("El número es impar");
System.out.println("");
}
System.out.println("Introduce otro número ");
num = entrada.nextInt();
}
System.out.println("El numero es " + num);
entrada.close();
}
}
9) Pide números al usuario hasta que introduzca un número negativo. Al finalizar, muestra cuántos números se han introducido (sin contar el negativo final).
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio09 {
public static void main(String[] args) {
int num;
int contador = 0;
Scanner entrada = new Scanner (System.in);
System.out.println("Introduce un número");
num = entrada.nextInt();
while (num>=0) {
contador++;
System.out.println("Introduce otro número ");
num = entrada.nextInt();
}
System.out.println("Has introducido " + contador + " número positivos");
entrada.close();
}
}
10) Pide números al usuario hasta que introduzca un 0. Al finalizar, muestra la suma total de los números introducidos.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio10 {
public static void main(String[] args) {
int suma = 0;
Scanner entrada = new Scanner(System.in);
System.out.println("Introduce un numero");
int num = entrada.nextInt();
while(num!=0) {
suma = suma+num;
System.out.println("Introduce otro numero");
num = entrada.nextInt();
}
System.out.println(suma);
entrada.close();
}
}
11) Pide números al usuario hasta que introduzca un número negativo. Al finalizar, calcula y muestra la media de los números introducidos (sin contar el negativo).
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio11 {
public static void main(String[] args) {
int num;
int suma = 0;
double numerosIntroducidos = 0;
Scanner entrada = new Scanner (System.in);
System.out.println("Introduce un número");
num = entrada.nextInt();
while(num>0) {
numerosIntroducidos++;
suma = suma+num;
System.out.println("Introduce otro numero");
num = entrada.nextInt();
}
System.out.println("La suma es: " + suma);
System.out.println("La media de la suma es " + (suma/numerosIntroducidos));
entrada.close();
}
}
Nivel 3: Validaciones y cálculos con bucles
Practica bucles en Java validando datos, acumulando resultados y realizando cálculos como medias, sumas y comprobaciones lógicas
12) Pide al usuario un número y asegúrate de que sea mayor o igual que 0. Si no lo es, vuelve a pedirlo (usa un bucle do-while). Al final, muestra el número introducido.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio12 {
public static void main(String[] args) {
int num;
Scanner entrada=new Scanner(System.in);
/*En este bucle se repite todo lo que está dentro del "do" hasta que se deje de
cumplir la condición del while*/
do {
System.out.println("Dame un número");
num=entrada.nextInt();
}while (num>=0);
System.out.println("El número es negativo, se sale del bucle");
entrada.close();
}
}
13) Pide al usuario cuántas ventas va a introducir. A continuación, pide el importe de cada venta y muestra la suma total de todas ellas.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio13 {
public static void main(String[] args) {
int suma=0;
Scanner entrada=new Scanner(System.in); //Creamos la entrada por consola
//Preguntamos cuantas ventas se han realizado
System.out.println("Cuantas ventas has realizado");
int numVentas=entrada.nextInt();
for (int i=0; i<numVentas; i++) {
//Preguntamos el precio de cada venta a cada vuelta de bucle
System.out.println("Precio de la venta " + (i+1));
int venta=entrada.nextInt();
suma+=venta; //Sumamos cada venta a cada vuelta de bucle
}
System.out.println("La suma de toda las ventas es de " + suma);
entrada.close(); //Cerramos el Scanner
}
}
14) Permite al usuario introducir números hasta que escriba -1. Al finalizar, muestra cuántos números se han introducido (sin contar el -1).
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio14 {
public static void main(String[] args) {
int contador=0;
Scanner entrada=new Scanner (System.in);
System.out.println("Dame un número");
int num=entrada.nextInt();
while(num!=-1) {
contador++;
System.out.println("Dame otro número");
num=entrada.nextInt();
}
entrada.close();
if (contador==1) System.out.println("Se han introducido " + contador + " número");
else System.out.println("Se han introducido " + contador + " números");
}
}
15) Pide al usuario 15 números y muestra la suma total.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio15 {
public static void main(String[] args) {
int num;
int suma = 0;
Scanner entrada = new Scanner (System.in);
for (int i=0; i<5; i++) {
System.out.println("Introduce un número");
num = entrada.nextInt();
suma = suma + num;
}
System.out.println("El resultado de la suma es: " + suma);
entrada.close();
}
}
16) Pide al usuario 10 números. Al finalizar, muestra:
- la media de los números positivos,
- la media de los números negativos,
- y cuántos ceros se han introducido.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio16 {
public static void main(String[] args) {
int num;
int suma = 0;
Scanner entrada = new Scanner (System.in);
for (int i=0; i<5; i++) {
System.out.println("Introduce un número");
num = entrada.nextInt();
suma = suma + num;
}
System.out.println("El resultado de la suma es: " + suma);
entrada.close();
}
}
17) Pide al usuario 10 sueldos, muestra la suma total y cuántos sueldos son mayores de 1000€.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio17 {
public static void main(String[] args) {
double sueldo = 0;
int sueldoSuperior = 0;
double suma = 0;
Scanner entrada = new Scanner (System.in);
for (int i=1; i<=10; i++) {
System.out.println(i + " Dame un sueldo");
sueldo = entrada.nextDouble();
suma = suma+sueldo;
if (sueldo>1000) sueldoSuperior++;
}
System.out.println("El salario total es: " + suma);
System.out.println("Hay " + sueldoSuperior + " que cobran más de 1000€");
entrada.close();
}
}
18) Pide al usuario un número N y, a continuación, introduce N sueldos. Al finalizar, muestra el sueldo máximo.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio18 {
public static void main(String[] args) {
int num;
int sueldo;
int suma = 0;
Scanner entrada = new Scanner (System.in);
System.out.println("Introduce un número");
num = entrada.nextInt();
for (int i=0; i<num; i++) {
System.out.println("Introduce el sueldo");
sueldo = entrada.nextInt();
if (sueldo>sueldoMaximo) {
sueldoMaximo=sueldo;
}
}
System.out.println("El sueldo máximo es: " + suma + "€");
entrada.close();
}
}
19) Pide al usuario 10 números y, al finalizar, indica si se ha introducido algún número negativo.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio19 {
public static void main(String[] args) {
int num;
int negativo = 0;
Scanner entrada = new Scanner (System.in);
for (int i=0; i<5; i++) {
System.out.println("Introduce un número");
num = entrada.nextInt();
if (num<0) negativo++;
}
System.out.println("Hay " + negativo + " números negativos");
entrada.close();
}
}
20) Pide al usuario 5 calificaciones y, al finalizar, indica si hay algún suspenso.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio20 {
public static void main(String[] args) {
int nota = 0;
int aprobados = 0;
int condicionados = 0;
int suspensos = 0;
Scanner entrada = new Scanner (System.in);
for (int i=1; i<6; i++) {
System.out.println("Introduce tu nota");
nota = entrada.nextInt();
if (nota>4) {
aprobados++;
}else if (nota==4) {
condicionados++;
}else suspensos++;
}
System.out.println("Han aprobado: " + aprobados + " alumnos");
System.out.println("Están dudosos: " + condicionados + " alumnos");
System.out.println("Han suspendido: " + suspensos + " alumnos");
entrada.close();
}
}
21) Pide al usuario 5 números e indica si alguno de ellos es múltiplo de 3.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio21 {
public static void main(String[] args) {
boolean comprueba = false;
Scanner entrada=new Scanner (System.in);
for (int i=0; i<5; i++) {
System.out.println("Dame un número");
int num=entrada.nextInt();
if (num%3==0) {
comprueba=true;
}
}
if (comprueba==true) {
System.out.println("Si hay números múltiplos de 3");
}else System.out.println("No hay números múltiplos de 3");
entrada.close();
}
}
Nivel 4: Sumatorios y productos con bucles
Practica operaciones acumulativas en Java calculando sumas y productos mediante bucles for y while
22) Pide al usuario un número N (mayor que 1) y calcula la suma de todos los números desde 1 hasta N.
- Versión con bucle for
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio22 {
public static void main(String[] args) {
int resultado=0;
Scanner entrada=new Scanner (System.in);
System.out.println("Dame un número");
int num=entrada.nextInt();
if (num>1) {
for (int i=1; i<=num; i++) {
resultado+=i;
}
System.out.println("La suma total es " + resultado);
}else System.out.println("El numero tiene que ser mayor que 1");
entrada.close();
}
}
- Versión con bucle while
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio22 {
public static void main(String[] args) {
int resultado=0;
int contador=0;
Scanner entrada=new Scanner (System.in);
System.out.println("Dame un número");
int num=entrada.nextInt();
if (num>1) {
while (contador!=num) {
contador++;
resultado+=contador;
}
System.out.println("La suma total es " + resultado);
}else System.out.println("El numero tiene que ser mayor que 1");
entrada.close();
}
}
23) Calcula el producto de los 10 primeros números impares y muestra por consola todos los resultados.
package ejercicios.bucles;
public class Ejercicio23 {
public static void main(String[] args) {
long producto = 1;
for (int i=1; i<20; i+=2) {
producto = producto*i;
}
System.out.println("La multiplicación de los 10 primeros impares: " + producto);
}
}
Nivel 5: Bucles, números aleatorios y números primos
Resuelve ejercicios avanzados con bucles en Java usando divisibilidad, números aleatorios, validaciones y números primos
24) Muestra por pantalla los números del 1 al 100 que sean divisibles simultáneamente entre 2 y entre 3.
Muestra por pantalla los números del 1 al 100 que sean divisibles entre 2 o entre 3.
package ejercicios.bucles;
public class Ejercicio24 {
public static void main(String[] args) {
//Divisibles simultanemanete
for (int i=1; i<=100; i++) {
if (i%2==0 && i%3==0) {
System.out.print(i + ", ");
}
}
System.out.println();
//Todos los divisibles entre 2 o tres
for (int i=1; i<=100; i++) {
if (i%2==0 || i%3==0) {
System.out.print(i + ", ");
}
}
}
}
25) Pide al usuario dos números enteros (mínimo y máximo) y genera 10 números aleatorios entre esos dos valores, ambos incluidos.
(Usa Math.random() y conviértelos a enteros correctamente).
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio25 {
public static void main(String[] args) {
Scanner entrada=new Scanner (System.in);
System.out.println("Dame el primer número");
int primero=entrada.nextInt();
System.out.println("Dame el segundo número");
int segundo=entrada.nextInt();
System.out.println();
System.out.println("GENERACIÓN DE 10 NÚMEROS ALEATORIOS");
for (int i=0; i<10; i++) {
if (primero>segundo) {
int aleatorio=(int)(Math.random()*(primero-segundo + 1)) + segundo;
System.out.println(aleatorio);
System.out.println();
}else if (segundo>primero) {
int aleatorio=(int)(Math.random()*(segundo-primero + 1)) + primero;
System.out.println(aleatorio);
System.out.println();
}
}
entrada.close();
}
}
26) Crea un juego para adivinar un número:
- Se pide un número objetivo N (o se genera aleatorio en el rango que quieras).
- El usuario intentará adivinarlo introduciendo números.
- Tras cada intento, el programa indicará “mayor” o “menor” según corresponda.
- El juego termina cuando el usuario acierta.
- Imprime por pantalla el número de intentos.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio26 {
public static void main(String[] args) {
int contador=0;
int numAleatorio=(int)(Math.random()*10)+1;
int num=-1;
Scanner entrada=new Scanner (System.in);
while (numAleatorio!=num) {
System.out.println("Dame un número del 0 al 10");
num=entrada.nextInt();
contador++;
if (num>numAleatorio) {
System.out.println("El número es menor");
System.out.println();
}else if (num<numAleatorio) {
System.out.println("El número es mayor");
System.out.println();
}
}
entrada.close();
System.out.println();
System.out.println("Has acertado en " + contador + " intentos");
}
}
27)Pide al usuario un número entero positivo (valídalo) e indica cuántas cifras tiene.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio27 {
public static void main(String[] args) {
//Primera forma de acerlo
int num=0;
Scanner entrada=new Scanner (System.in);
System.out.println("Dame un número positivo");
num=entrada.nextInt();
while (num<0) {
System.out.println("Vuelve a introducir el número, pero que sea positivo");
num=entrada.nextInt();
}
if (num<10) {System.out.println(num + " tiene una cifra"); }
else if (num<100) {System.out.println(num + " tiene dos cifras"); }
else if (num<1000) {System.out.println(num + " tiene tres cifras"); }
else if (num<10000) {System.out.println(num + " tiene cuatro cifras"); }
else if (num<100000) {System.out.println(num + " tiene cinco cifras"); }
//Segunda forma de hacerlo
int num2=0;
System.out.println("Dame un número positivo");
num2=entrada.nextInt();
while (num2<0) {
System.out.println("Vuelve a introducir el número, pero que sea positivo");
num2=entrada.nextInt();
}
String cifras=String.valueOf(num2);
if (num2<10) {
System.out.println(num2 + " tiene " + cifras.length() + " cifra");
}else {
System.out.println(num2 + " tiene " + cifras.length() + " cifras");
}
entrada.close();
}
}
28) Pide al usuario un número e indica si es primo.
(Si el número es menor o igual que 1, se considera directamente “no primo”).
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio28 {
public static void main(String[] args) {
boolean esPrimo = true;
Scanner entrada=new Scanner (System.in);
System.out.println("Dame un número");
int num=entrada.nextInt();
if (num <= 1) {
esPrimo = false;
}
for (int i=2; i<num; i++) {
if (num % i == 0) {
esPrimo = false;
}
}
if (esPrimo) {
System.out.println(num + " es un número primo");
}else System.out.println(num + " no es un número primo");
entrada.close();
}
}
Nivel 6: Cadenas de texto y bucles
Practica manipulación de cadenas en Java utilizando bucles para recorrer textos, eliminar caracteres y trabajar con frases
29) En la cadena: "La lluvia en Sevilla es una maravilla", cuenta cuántas vocales hay en total (recorre el String con charAt).
package ejercicios.bucles;
public class Ejercicio30 {
public static void main(String[] args) {
int cont=0;
String frase="Al reves está mejor";
for (int i=0; i<frase.length(); i++) {
frase=frase.toLowerCase(); //Convierte mayúsculas a minúsculas
char cadena=frase.charAt(i);
if (cadena=='a' || cadena=='e'
|| cadena=='i' || cadena=='o'
|| cadena=='u' || cadena=='á'
|| cadena=='é' || cadena=='í'
|| cadena=='ó' || cadena=='ú') {
cont++;
}
}
System.out.println("Hay " + cont + " vocales en total");
}
}
30) Pide al usuario una frase y muestra la misma frase sin espacios.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio31 {
public static void main(String[] args) {
Scanner entrada=new Scanner (System.in);
System.out.println("Dame una frase");
String frase=entrada.nextLine();
for (int i=0; i<frase.length(); i++) {
char cadena=frase.charAt(i);
if (cadena!=' ') {
System.out.print(cadena);
}
}
entrada.close();
}
}
31) Pide al usuario que introduzca frases de forma repetida. El programa terminará cuando se introduzca una cadena vacía. Al final, muestra el texto resultante.
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio32 {
public static void main(String[] args) {
Scanner entrada=new Scanner (System.in);
System.out.println("Dame una frase");
String frase=entrada.nextLine();
String cadenas=frase;
while (!frase.isEmpty()) {
System.out.println("Dame otra frase");
frase=entrada.nextLine();
if (!frase.isEmpty()) {
cadenas+=frase;
}
}
System.out.println();
System.out.println(cadenas);
entrada.close();
}
}
Nivel 7: Bucles anidados y lógica avanzada
Resuelve ejercicios avanzados en Java utilizando bucles anidados, tablas, figuras, números primos y estructuras repetitivas complejas
32) Muestra por consola todos los números primos entre 1 y 100.
package ejercicios.bucles;
public class Ejercicio29 {
public static void main(String[] args) {
for (int num = 2; num <= 100; num++) {
boolean esPrimo = true;
for (int i = 2; i < num; i++) {
if (num % i == 0) {
esPrimo = false;
}
}
if (esPrimo) {
System.out.println(num);
}
}
}
}
33) Diseña una aplicación que muestre por pantalla las tablas de multiplicar del 1 al 10.
package ejercicios.bucles;
public class Ejercicio33 {
public static void main(String[] args) {
int num = 0;
while (num<10) {
num++;
for (int i=1; i<11; i++) {
int resultado = num*i;
System.out.println(num + " * " + i + " = " + resultado);
}
System.out.println();
}
}
}
34) Pide al usuario un número entero N y dibuja un cuadrado de N elementos por lado usando el carácter *.
Ejemplo si N = 4:
****
****
****
****
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio34 {
public static void main(String[] args) {
int lado; // tamaño del lado
Scanner entrada = new Scanner (System.in);
int fila, col;
System.out.print ("Lado del cuadrado: ");
lado = entrada.nextInt();
for (fila=1; fila<=lado; fila++) {
for (col=1; col<=lado; col++)
System.out.print ("* ");
System.out.println ("");
}
entrada.close();
}
}
35) Crea un programa que muestre un contador de 5 dígitos, desde: 0-0-0-0 hasta 9-9-9-9
Cada dígito debe ir separado por guiones -.
Condición especial:
Cada vez que un dígito sea 3, debe mostrarse como la letra 'E'.
Ejemplo:
- 0-0-0-0-0
- 0-0-0-0-1
- .........
- 0-0-0-0-E
- .........
- 9-9-9-9-9
package ejercicios.bucles;
public class Ejercicio36 {
public static void main(String[] args) {
int num1=0;
int num2=0;
int num3=0;
int num4=0;
for (num1=0; num1<=9; num1++) {
for (num2=0; num2<=9; num2++) {
for (num3=0; num3<=9; num3++) {
for (num4=0; num4<=9; num4++) {
//El método valueOf(num1); devuelve el entero en cadena "1"
String d1 = (num1 == 3) ? "E" : String.valueOf(num1);
String d2 = (num2 == 3) ? "E" : String.valueOf(num2);
String d3 = (num3 == 3) ? "E" : String.valueOf(num3);
String d4 = (num4 == 3) ? "E" : String.valueOf(num4);
System.out.println(d1 + "-" + d2 + "-" + d3 + "-" + d4);
}
}
}
}
}
}
36) Pide al usuario un número entero N y calcula cuántos números primos existen entre 1 y n (ambos incluidos).
(Recuerda que un número primo es aquel que solo es divisible entre 1 y sí mismo).
package ejercicios.bucles;
import java.util.Scanner;
public class Ejercicio37 {
public static void main(String[] args) {
Scanner entrada=new Scanner(System.in);
System.out.println("Dame un número");
int num1=entrada.nextInt();
int cont=0;
for (int num = 2; num <= num1; num++) {
boolean esPrimo = true;
for (int i = 2; i < num; i++) {
if (num % i == 0) {
esPrimo = false;
break;
}
}
if (esPrimo) {
cont++;
}
}
System.out.println("Hay " + cont + " números primos");
}
}