En este tema, aprenderemos a desarrollar una aplicación de consola en Java. Las aplicaciones de consola son programas que se ejecutan en la línea de comandos y no tienen una interfaz gráfica de usuario. Son ideales para aprender los conceptos básicos de programación y para tareas automatizadas.
Objetivos del Tema
- Comprender la estructura de una aplicación de consola en Java.
- Aprender a leer y escribir datos en la consola.
- Desarrollar una aplicación de consola simple que interactúe con el usuario.
Estructura de una Aplicación de Consola
Una aplicación de consola en Java generalmente sigue una estructura básica que incluye:
- Clase Principal: Contiene el método
main
, que es el punto de entrada de la aplicación. - Métodos Auxiliares: Métodos adicionales que realizan tareas específicas.
Ejemplo de Estructura Básica
public class ConsoleApp { public static void main(String[] args) { // Punto de entrada de la aplicación System.out.println("Bienvenido a la Aplicación de Consola"); // Llamada a un método auxiliar greetUser(); } // Método auxiliar para saludar al usuario public static void greetUser() { System.out.println("Hola, usuario!"); } }
Lectura y Escritura en la Consola
Para interactuar con el usuario, utilizamos las clases Scanner
para la entrada de datos y System.out
para la salida de datos.
Ejemplo de Lectura y Escritura
import java.util.Scanner; public class ConsoleApp { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); System.out.println("Ingrese su nombre:"); String name = scanner.nextLine(); System.out.println("Hola, " + name + "!"); scanner.close(); } }
Explicación del Código
- Importación de
Scanner
:import java.util.Scanner;
permite utilizar la claseScanner
para leer datos de la consola. - Creación de un objeto
Scanner
:Scanner scanner = new Scanner(System.in);
crea un objetoScanner
que lee datos de la entrada estándar (la consola). - Lectura de Datos:
String name = scanner.nextLine();
lee una línea completa de texto ingresada por el usuario. - Escritura de Datos:
System.out.println("Hola, " + name + "!");
imprime un mensaje en la consola. - Cierre del
Scanner
:scanner.close();
cierra el objetoScanner
para liberar recursos.
Desarrollo de una Aplicación de Consola Completa
Vamos a desarrollar una aplicación de consola que realice las siguientes tareas:
- Solicitar al usuario su nombre.
- Solicitar al usuario su edad.
- Calcular el año de nacimiento del usuario.
- Mostrar un mensaje con el año de nacimiento.
Código Completo
import java.util.Scanner; public class ConsoleApp { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Solicitar el nombre del usuario System.out.println("Ingrese su nombre:"); String name = scanner.nextLine(); // Solicitar la edad del usuario System.out.println("Ingrese su edad:"); int age = scanner.nextInt(); // Calcular el año de nacimiento int currentYear = java.time.Year.now().getValue(); int birthYear = currentYear - age; // Mostrar el mensaje con el año de nacimiento System.out.println("Hola, " + name + ". Naciste en el año " + birthYear + "."); scanner.close(); } }
Explicación del Código
- Lectura de la Edad:
int age = scanner.nextInt();
lee un número entero ingresado por el usuario. - Obtención del Año Actual:
int currentYear = java.time.Year.now().getValue();
obtiene el año actual utilizando la claseYear
de la API de tiempo de Java. - Cálculo del Año de Nacimiento:
int birthYear = currentYear - age;
calcula el año de nacimiento restando la edad del año actual. - Mostrar el Mensaje:
System.out.println("Hola, " + name + ". Naciste en el año " + birthYear + ".");
imprime un mensaje con el año de nacimiento.
Ejercicio Práctico
Ejercicio
Desarrolla una aplicación de consola que realice las siguientes tareas:
- Solicitar al usuario su nombre.
- Solicitar al usuario su altura en metros.
- Solicitar al usuario su peso en kilogramos.
- Calcular el índice de masa corporal (IMC) del usuario.
- Mostrar un mensaje con el IMC calculado.
Solución
import java.util.Scanner; public class IMCCalculator { public static void main(String[] args) { Scanner scanner = new Scanner(System.in); // Solicitar el nombre del usuario System.out.println("Ingrese su nombre:"); String name = scanner.nextLine(); // Solicitar la altura del usuario System.out.println("Ingrese su altura en metros (por ejemplo, 1.75):"); double height = scanner.nextDouble(); // Solicitar el peso del usuario System.out.println("Ingrese su peso en kilogramos:"); double weight = scanner.nextDouble(); // Calcular el IMC double bmi = weight / (height * height); // Mostrar el mensaje con el IMC calculado System.out.println("Hola, " + name + ". Tu IMC es " + bmi + "."); scanner.close(); } }
Explicación del Código
- Lectura de la Altura:
double height = scanner.nextDouble();
lee un número decimal ingresado por el usuario. - Lectura del Peso:
double weight = scanner.nextDouble();
lee un número decimal ingresado por el usuario. - Cálculo del IMC:
double bmi = weight / (height * height);
calcula el índice de masa corporal utilizando la fórmula IMC = peso / (altura * altura). - Mostrar el Mensaje:
System.out.println("Hola, " + name + ". Tu IMC es " + bmi + ".");
imprime un mensaje con el IMC calculado.
Conclusión
En este tema, hemos aprendido a desarrollar una aplicación de consola en Java. Hemos cubierto la estructura básica de una aplicación de consola, cómo leer y escribir datos en la consola, y hemos desarrollado una aplicación completa que interactúa con el usuario. Además, hemos realizado un ejercicio práctico para reforzar los conceptos aprendidos.
En el siguiente tema, exploraremos el desarrollo de una aplicación web en Java, lo que nos permitirá crear aplicaciones más complejas y con interfaces gráficas.
Curso de Programación en Java
Módulo 1: Introducción a Java
- Introducción a Java
- Configuración del Entorno de Desarrollo
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
- Operadores
Módulo 2: Flujo de Control
Módulo 3: Programación Orientada a Objetos
- Introducción a la POO
- Clases y Objetos
- Métodos
- Constructores
- Herencia
- Polimorfismo
- Encapsulamiento
- Abstracción
Módulo 4: Programación Orientada a Objetos Avanzada
Módulo 5: Estructuras de Datos y Colecciones
Módulo 6: Manejo de Excepciones
- Introducción a las Excepciones
- Bloque Try-Catch
- Throw y Throws
- Excepciones Personalizadas
- Bloque Finally
Módulo 7: Entrada/Salida de Archivos
- Lectura de Archivos
- Escritura de Archivos
- Flujos de Archivos
- BufferedReader y BufferedWriter
- Serialización
Módulo 8: Multihilo y Concurrencia
- Introducción al Multihilo
- Creación de Hilos
- Ciclo de Vida de un Hilo
- Sincronización
- Utilidades de Concurrencia
Módulo 9: Redes
- Introducción a las Redes
- Sockets
- ServerSocket
- DatagramSocket y DatagramPacket
- URL y HttpURLConnection