- Practicar la declaración y manipulación de variables en Java.
- Utilizar bucles for y while para resolver problemas.
- Leer datos desde la consola utilizando la clase Scanner.
- Escribir datos en archivos de texto utilizando la clase FileWriter.
- Desarrollar habilidades de resolución de problemas y pensamiento lógico.
-
Objetivo: Calcular el promedio de una serie de números introducidos por el usuario. El propio usuario nos dirá cuántos números desea promediar y nos dará cada uno de ellos.
-
Instrucciones:
- Crea un archivo con una clase llamada
AverageCalculator. - Dentro de la clase
AverageCalculator, en el métodomain, declara una variableScannerpara leer la entrada del usuario. - Pide al usuario que introduzca la cantidad de números que desea promediar.
- Utiliza un bucle
forpara pedir al usuario que introduzca cada número. - Calcula la suma de los números introducidos.
- Divide la suma por la cantidad de números para obtener el promedio.
- Muestra el promedio en la consola.
- Crea un archivo con una clase llamada
Solución paso a paso
- Crea un archivo con la clase llamada
AverageCalculator. - Importa la clase Scanner con
import java.util.Scanner;. - Define el método
main(puedes usar la abreviación de teclado psvm en IntelliJ). - Crea un objeto Scanner:
Scanner scanner = new Scanner(System.in);. - Solicita al usuario la cantidad de números:
System.out.println("Introduce la cantidad de números a promediar: ");. - Lee el valor con
int count = scanner.nextInt();. - Inicializa una variable para la suma:
double sum = 0;. - Crea un bucle for desde 1 hasta count:
for (int i = 1; i <= count; i++). - Dentro del bucle, solicita cada número y súmalo a la variable sum.
- Calcula el promedio con
double average = sum / count;. - Muestra el resultado con
System.out.println("El promedio es: " + average);. - Cierra el Scanner con
scanner.close();.
import java.util.Scanner;
public class AverageCalculator {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Introduce la cantidad de números a promediar: ");
int count = scanner.nextInt();
double sum = 0;
for (int i = 1; i <= count; i++) {
System.out.println("Introduce el número " + i + ": ");
double num = scanner.nextDouble();
sum += num;
}
double average = sum / count;
System.out.println("El promedio es: " + average);
scanner.close();
}
}-
Objetivo: Generar la tabla de multiplicar de un número introducido por el usuario.
-
Instrucciones:
- Crea un archivo con la clase llamada
MultiplicationTable. - Dentro de la clase
MultiplicationTable, en el métodomain, declara una variableScannerpara leer la entrada del usuario. - Pide al usuario que introduzca un número entero.
- Utiliza un bucle
forpara generar la tabla de multiplicar del 1 al 10. - Muestra cada línea de la tabla de multiplicar en la consola.
- Crea un archivo con la clase llamada
Solución paso a paso
- Crea un archivo con la clase llamada
MultiplicationTable. - Importa la clase Scanner con
import java.util.Scanner;. - Define el método público y estático
main(con psvm lo puedes generar automáticamente). - Crea un objeto Scanner:
Scanner scanner = new Scanner(System.in);. Esto nos permitirá leer aquello que escriba el usuario en la consola. - Solicita al usuario un número:
System.out.println("Introduce un número para generar su tabla de multiplicar: ");. - Lee el valor con tu scanner
int number = scanner.nextInt();. Como estamos solicitando un número entero, lo guardamos en una variable de tipo int. - Crea un bucle for desde 1 hasta 10:
for (int i = 1; i <= 10; i++). - Dentro del bucle, calcula y muestra el resultado de cada multiplicación. Utiliza un
System.out.printlnpara mostrar el resultado en la consola:System.out.println(number + " x " + i + " = " + (number * i));. - Cierra el Scanner con
scanner.close();.
import java.util.Scanner;
public class MultiplicationTable {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Introduce un número para generar su tabla de multiplicar: ");
int number = scanner.nextInt();
System.out.println("Tabla de multiplicar del " + number + ":");
for (int i = 1; i <= 10; i++) {
System.out.println(number + " x " + i + " = " + (number * i));
}
scanner.close();
}
}-
Objetivo: Contar el número de vocales en una frase introducida por el usuario.
-
Instrucciones:
- Crea una clase llamada
VowelCounter. - Dentro de la clase
VowelCounter, en el métodomain, declara una variableScannerpara leer la entrada del usuario. - Pide al usuario que introduzca una frase.
- Utiliza un bucle
forpara recorrer cada carácter de la frase. - Utiliza una estructura
ifoswitchpara verificar si cada carácter es una vocal. - Incrementa un contador cada vez que se encuentre una vocal.
- Muestra el número total de vocales en la consola.
- Crea una clase llamada
Solución paso a paso
- Crea un archivo con la clase llamada
VowelCounter. - Importa la clase Scanner con
import java.util.Scanner;. - Define el método
main(puedes usar la abreviación de teclado psvm en IntelliJ). - Crea un objeto Scanner:
Scanner scanner = new Scanner(System.in);. - Solicita al usuario una frase:
System.out.println("Introduce una frase: ");. - Lee la frase con
String phrase = scanner.nextLine();. - Convierte la frase a minúsculas para facilitar la comparación:
phrase = phrase.toLowerCase();. - Inicializa un contador de vocales:
int vowelCount = 0;. - Crea un bucle for para recorrer cada carácter:
for (int i = 0; i < phrase.length(); i++). - Dentro del bucle, obtén el carácter actual:
char ch = phrase.charAt(i);. - Verifica si es una vocal y aumenta el contador si es el caso.
- Muestra el resultado final.
- Cierra el Scanner con
scanner.close();.
import java.util.Scanner;
public class VowelCounter {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Introduce una frase: ");
String phrase = scanner.nextLine();
// Convertir a minúsculas para simplificar la comparación
phrase = phrase.toLowerCase();
int vowelCount = 0;
for (int i = 0; i < phrase.length(); i++) {
char ch = phrase.charAt(i);
// Verificar si el carácter es una vocal
// como ya lo hemos convertido a minúsculas, no es necesario comparar con mayúsculas
// para comparar caracteres, lo podemos hacer con == porque son primitivos
// si lo hiciéramos con Strings, tendríamos que usar el método equals()
// o equalsIgnoreCase() para ignorar mayúsculas y minúsculas
if (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u') {
vowelCount++;
}
}
System.out.println("La frase contiene " + vowelCount + " vocales.");
scanner.close();
}
}-
Objetivo: Escribir una serie de líneas de texto en un archivo.
-
Instrucciones:
- Crea un archivo con la clase llamada
FileWriterExample. - Dentro de la clase
FileWriterExample, en el métodomain, declara una variableScannerpara leer la entrada del usuario. - Pide al usuario que introduzca el nombre del archivo en el que desea escribir.
- Pide al usuario que introduzca líneas de texto, una por una.
- Utiliza un bucle
whilepara leer las líneas de texto hasta que el usuario introduzca una línea vacía. - Utiliza la clase
FileWriterpara escribir cada línea de texto en el archivo. - Cierra el archivo.
- Crea un archivo con la clase llamada
Solución paso a paso
- Crea un archivo Java con la clase llamada
FileWriterExample. - Importa las clases necesarias:
import java.util.Scanner; import java.io.FileWriter; import java.io.IOException;
- Define la clase
FileWriterExamplecon su métodomain. - Crea un objeto Scanner:
Scanner scanner = new Scanner(System.in);. - Solicita el nombre del archivo:
System.out.println("Introduce el nombre del archivo: ");. - Lee el nombre con
String fileName = scanner.nextLine();. - Usa un bloque try-catch para manejar excepciones de E/S.
- Dentro del try, crea un FileWriter:
FileWriter writer = new FileWriter(fileName);. - Explica al usuario cómo terminar la entrada:
System.out.println("Introduce líneas de texto (línea vacía para terminar):");. - Usa un bucle while para leer líneas hasta que sea vacía.
- Dentro del bucle, escribe cada línea al archivo y añade un salto de línea.
- Cierra el writer y el scanner.
- Muestra un mensaje de confirmación.
import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;
public class FileWriterExample throws IOException { // en el caso de error con el archivo, necesitamos este throws (veremos más adelante cómo gestionarlo)
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("Introduce el nombre del archivo: ");
String fileName = scanner.nextLine();
FileWriter writer = new FileWriter(fileName);
System.out.println("Introduce líneas de texto (línea vacía para terminar):");
String line;
while (true) {
line = scanner.nextLine();
if (line.isEmpty()) { // si la línea está vacía, terminamos el bucle
// si no, podemos seguir hasta el infinito! 😂
break;
}
writer.write(line + "\n");
}
writer.close();
System.out.println("El archivo se ha escrito correctamente.");
scanner.close();
}
}-
Objetivo: Crear un juego en el que el usuario debe adivinar un número aleatorio generado por el programa.
-
Instrucciones:
- Crea un archivo con la clase llamada
NumberGuessingGame. - Dentro de la clase
NumberGuessingGame, en el métodomain, genera un número aleatorio entre 1 y 100. (Utiliza Math.random() o la clase Random) Ejemplo de uso de random:
Random random = new Random(); int secretNumber = random.nextInt(100) + 1; // Genera un número int aleatorio entre 1 y 100
- Pide al usuario que adivine el número.
- Utiliza un bucle
whilepara permitir al usuario hacer intentos hasta que adivine el número. - Proporciona pistas al usuario ("El número es mayor" o "El número es menor") después de cada intento.
- Muestra un mensaje de felicitación cuando el usuario adivine el número.
- Muestra el número de intentos que necesitó el usuario para adivinar el número.
- Crea un archivo con la clase llamada
Solución paso a paso
- Crea un archivo Java llamado
NumberGuessingGame.java. - Importa las clases necesarias:
import java.util.Scanner; import java.util.Random;
- Define la clase
NumberGuessingGamecon su métodomain. - Crea un objeto Scanner:
Scanner scanner = new Scanner(System.in);. - Crea un objeto Random:
Random random = new Random();. - Genera un número aleatorio entre 1 y 100:
int secretNumber = random.nextInt(100) + 1;. - Inicializa un contador de intentos:
int attempts = 0;. - Inicializa una variable para la suposición del usuario:
int guess = 0;. - Crea un bucle while que continúe hasta que el usuario adivine el número.
- Dentro del bucle:
- Solicita al usuario una suposición
- Incrementa el contador de intentos
- Compara la suposición con el número secreto
- Proporciona retroalimentación ("mayor", "menor" o "correcto")
- Después del bucle, muestra un mensaje de felicitación y el número de intentos.
- Cierra el Scanner con
scanner.close();.
import java.util.Scanner;
import java.util.Random;
public class NumberGuessingGame {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
Random random = new Random();
// Generar número aleatorio entre 1 y 100
int secretNumber = random.nextInt(100) + 1;
int attempts = 0;
int guess = 0;
System.out.println("¡Bienvenido al Juego de Adivinanzas!");
System.out.println("He pensado en un número entre 1 y 100.");
// Bucle hasta que el usuario adivine el número
while (guess != secretNumber) {
System.out.print("Introduce tu suposición: ");
guess = scanner.nextInt();
attempts++;
if (guess < secretNumber) {
System.out.println("El número es mayor. Inténtalo de nuevo.");
} else if (guess > secretNumber) {
System.out.println("El número es menor. Inténtalo de nuevo.");
} else {
System.out.println("¡Felicidades! ¡Has adivinado el número!");
System.out.println("Has necesitado " + attempts + " intentos.");
}
}
scanner.close();
}
}