Capítulo 3. El amigo de Rich / Entrada de datos por teclado
Han pasado dos días desde la fiesta y toca limpiar. No se puede decir que sea una de mis actividades favoritas, pero esta vez no queda más remedio. No puedo dejar de pensar en la suerte que tiene Chani por librarse de esta desagradable tarea. Mucha de la gente que vino a la fiesta eran amigos suyos, y no me parece justo limpiar lo que ellos han ensuciado. Aunque, pensándolo mejor, no conocíamos la razón por la que se había ido repentinamente. Es muy posible que fuese por algo importante, y el hecho de que no conteste al teléfono me preocupa bastante.
Por otro lado, estoy enfadado. Entre otras pertenencias, mi portátil está atrapado dentro de su armario. En mi cabeza ronda una pregunta: ¿por qué, antes de irse, se tomó su tiempo para recoger su habitación? Si necesitas irte urgentemente, simplemente coges lo que necesitas y te vas.

Rich parece tranquilo, apenas dice nada. De vez en cuando sonríe y parece que tiene la mente en otro lado. A penas me ha dirigido la palabra en todo el día. Pero no me extraña en absoluto. Él a veces es así.
Se pone a pensar en sus cosas y pasa horas sin hablar con nadie. Aunque lo cierto es que, en ese estado, es bastante productivo. Tiene una capacidad de concentración asombrosa. Creo que por eso es mejor estudiante que yo. En estos momentos, prefiero no molestarle y que se concentre en la limpieza. Cuanto antes acabemos, mejor. Le dejaré recogiendo la cocina mientras yo friego el resto de la casa. Después de esto, todo debería estar limpio.
Por fin, parece que ya ha acabado esta tortura. Después de varias horas de sufrimiento, puedo decir que hemos terminado. Mi plan es tumbarme en el sofá lo que queda del día. Rich, en cambio, parece que ha quedado con alguien. Imagino que se va a marchar de casa pronto. Está en el baño arreglándose, así que puede estar allí horas. Le encanta mirarse en el espejo y siempre sale de casa perfectamente arreglado.
Decido ponerme cómodo, pero pronto tengo que levantarme. Alguien ha llamado al timbre. Durante la semana no solemos recibir visitas, así que me parece un poco raro. Preguntan por Rich, así que abro la puerta del portal. Me quedo en la puerta, para no tener que volver a levantarme. Además, tengo mucha curiosidad por ver quién viene.
Se trata de un amigo de Rich. He hablado un par de veces con él, pero la verdad es que no recuerdo su nombre. Parece que conoce la casa, aunque no recuerdo que haya estado aquí nunca. Después de saludarme, se ha ido directo a la habitación de Rich. Estoy un poco sorprendido, pero imagino que Rich ya había quedado con él.

Parece que ya puedo relajarme, y como no tengo absolutamente nada que hacer, he cogido un libro de Java y voy a tratar de aprender un poco más.
Introducir datos por teclado
El tema es bastante sencillo, pero antes de ponernos con él, aún es necesario aprender algún concepto teórico más. Toda esta información puede resultar algo abrumadora al principio, pero poco a poco todo cobrará sentido. Como consejo personal, te diré que es importante combinar la teoría con la práctica. Los ejercicios son amenos e incluso me atrevería a decir que entretenidos. Lo importante es ir avanzando y cada día saber un poco más. Ahora toca entender de forma general lo que es una clase.
Introducción al concepto de clase
Cuando trabajamos en nuestra IDE escribimos nuestro código dentro de estas líneas:
public class Main {
public static void main(String[] args){
Aquí va nuestro código.
}
}
Te explico lo que significan esas dos primeras líneas que vemos ahí; es muy posible que lleves un tiempo preguntándote por qué están ahí y para qué sirven. En temas posteriores vamos a profundizar y analizar con detalle el concepto de clase. Por ahora, es importante que entiendas que esas líneas son necesarias para que el código pueda identificar que estamos trabajando con una clase y que esto será fundamental en la programación orientada a objetos.
public class Main: En Java, un programa se organiza en «clases». Una clase es como un plano o una receta que le dice a la computadora cómo hacer algo. Cuando escribes public class Main, estás diciendo que estás creando una nueva clase llamada «Main». El public significa que esta clase es accesible desde cualquier parte del programa.
Cuando comienzas un proyecto en Java, necesitas al menos una clase que actúe como punto de partida, y usualmente se llama «Main» (aunque puede tener cualquier nombre). Esta clase Main es donde comienza la ejecución del programa.
public static void main(String[] args): Es el método principal (o «main») que el sistema ejecuta para iniciar un programa.
- public: Esto significa que el método main es accesible desde cualquier parte del programa. Es como una puerta abierta que permite que otros métodos lo llamen.
- static: Esto indica que el método main pertenece a la clase en sí misma, en lugar de a una instancia específica de la clase. En pocas palabras, puedes llamar a main sin necesidad de crear un objeto de esa clase.
- void: Esto significa que el método main no devuelve ningún valor. En otras palabras, no produce ningún resultado cuando se ejecuta.
- main: Este es el nombre del método. Es el punto de entrada principal para el programa.
- String[] args: Este es un parámetro que recibe el método main. Es un arreglo de cadenas de texto que puede contener argumentos que se pasan al programa cuando se ejecuta. Por ejemplo, si ejecutas tu programa desde la línea de comandos y escribes algo después del nombre del programa, esos «algo» se almacenan en este arreglo. Por ejemplo, si ejecutas java miPrograma Hola Mundo, entonces «Hola» y «Mundo» estarían almacenados en args.
Puede que todo esto te resulte un poco raro de comprender, pero pronto todo te empezará a tener sentido. En los siguientes temas tocaremos estos conceptos más en profundidad. De momento, vamos a centrarnos en aprender a resolver problemas y en entender otra serie de conceptos básicos.
El orden de ejecución de un programa
Para comprender mejor este apartado, debes de entender el orden en cómo se ejecutan nuestras líneas de código en Java. El programa se va ejecutando de arriba abajo. Por ejemplo, si creamos una variable en la línea 18 y tratamos de asignarle valor en la línea 17 (una línea antes), el programa nos devolverá un error. En la línea 17, la variable aún no se ha creado, así que el programa aún no sabe que existe. El único proceso válido es primero crear una variable y después asignarle valor.
Lo mismo pasa a la hora de introducir datos por teclado. Da igual que tengamos cinco mil líneas escritas; si en la línea 22 hemos dado la instrucción de que hay que introducir un dato por teclado, el programa no leerá las siguientes líneas hasta que introduzcamos algo.
Una vez hecha esta pequeña aclaración, ya podemos meternos en profundidad en este tema. Lo primero que necesitamos es saber lo que es un Scanner y después cómo lo aplicamos a nuestros programas y aplicaciones.
Importancia de la Entrada de Datos en Aplicaciones Interactivas
La entrada de datos es fundamental en cualquier aplicación interactiva, ya que permite que los usuarios proporcionen la información necesaria para el funcionamiento del programa. Aquí te dejo algunas razones clave de por qué la entrada de datos es tan importante:
1. Interacción Usuario-Programa
La entrada de datos permite la interacción directa entre el usuario y el programa. Sin esta interacción, el software no podría adaptarse a las necesidades y preferencias del usuario.
Por ejemplo, en una aplicación bancaria, el usuario puede ingresar su número de cuenta y PIN para acceder a su información financiera.
2. Personalización y Adaptación
Los programas pueden personalizarse según las entradas del usuario, ofreciendo una experiencia más relevante y personalizada.
3. Recopilación de Información
Las aplicaciones recopilan datos a través de la entrada del usuario para realizar cálculos, almacenar información y tomar decisiones informadas.
4. Control y Navegación
La entrada de datos permite a los usuarios navegar por las diferentes opciones y funcionalidades.
5. Validación y Seguridad
A través de la entrada de datos, las aplicaciones pueden implementar mecanismos de validación y seguridad, asegurando que solo los usuarios autorizados accedan a ciertas funciones.
6. Recogida de Feedback y Mejoras
Las aplicaciones pueden incluir mecanismos para que los usuarios proporcionen feedback, lo cual es crucial para la mejora continua del software.
Uso de la Clase Scanner
En Java, un «scanner» se refiere comúnmente a la clase Scanner del paquete java.util. Esta clase se utiliza para leer la entrada del usuario desde la consola o desde otros flujos de entrada, como archivos. Permite leer diferentes tipos de datos, como enteros, flotantes, cadenas, etc.
Para poder utilizar scanner en java debemos escribir la siguiente línea encima de nuestra clase principal:
import java.util.Scanner;
Nos quedaría lo de la siguiente manera:
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//código de nuestro programa.
}
}
Concepto de paquete en Java
En Java, un «paquete» es simplemente una forma de agrupar y organizar el código. Imagina que es como una carpeta donde guardas archivos relacionados. Los paquetes nos ayudan a evitar que haya confusiones con los nombres de las clases y permiten que nuestro código esté mejor organizado.
Un paquete puede contener varias cosas, como clases, interfaces y subpaquetes. Por ejemplo, si estás creando un programa para una tienda en línea, podrías tener un paquete llamado «com.tiendaonline» donde guardes todas las clases que tienen que ver con tu tienda.
Para indicar que una clase pertenece a un paquete, se usa la palabra clave package al inicio del archivo de la clase.
Por ejemplo:
package com.tiendaonline;
public class Producto {
// Código de la clase Producto
}
En este ejemplo, la clase Producto pertenece al paquete com.tiendaonline. Esto significa que otras clases en el mismo paquete pueden acceder a ella directamente sin necesidad de importarla, mientras que las clases fuera de este paquete necesitarán importarla para poder utilizarla.
Una vez que hemos importado el paquete Scanner, ya podemos continuar escribiendo el código de nuestro programa dentro de nuestra clase.
Creando y utilizando un Scanner
Para poder introducir datos por teclado, lo primero que debemos hacer es crear un Scanner y se hace siempre de la siguiente forma:
Scanner ejercicio = new Scanner(System.in);
En este caso hemos llamado a nuestro Scanner “ejercicio” pero evidentemente se puede llamar como prefieras.
Una vez creado, necesitamos llamar a ese scanner y deberemos hacerlo justo en el momento que necesitemos que se introduzca un dato por teclado. El programa no continuará ejecutándose hasta que no se introduzca un valor por teclado. La línea de código que vamos a utilizar para llamar a ese Scanner va a depender del tipo de dato que vamos a introducir.
Lectura de Diferentes Tipos de Datos
Con Scanner, puedes capturar cadenas de texto, números enteros, números de punto flotante, valores booleanos y más, todo con métodos específicos que garantizan una lectura precisa y eficiente. Sin embargo, dependiendo del tipo de dato, necesitaremos usar una línea de código distinta para «llamar» al Scanner que hemos creado previamente.
Observa estos ejemplos:
int a = ejercicio.nextInt();
double a = ejercicio.nextDouble();
String a = ejercicio.nextLine();
boolean a = ejercicio.nextBoolean();
char a = ejercicio.next().charAt(0);
Ten cuidado ya que todos tienen la misma estructura excepto en el caso de las variables tipo char.
Ejemplo práctico:
Vamos a ver un ejemplo, ya que es la manera más sencilla de entenderlo. Necesitamos crear un programa en el que se introduzcan dos números enteros. Los llamaremos a y b. El programa deberá pedirnos uno a uno que introduzcamos su valor. Después, realizará la multiplicación de ambos valores y nos mostrará el resultado en la consola.
En el código siguiente, veremos cómo importamos el paquete Scanner, luego creamos un Scanner llamado ejercicio, y por último llamamos al Scanner en el momento exacto en el que necesitamos que se introduzcan los datos.
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
//Creamos el Scanner
Scanner ejercicio = new Scanner(System.in);
// Pedimos el valor del número a
System.out.println("Introduce el valor del número a");
int a = ejercicio.nextInt();
// Pedimos el valor del número b
System.out.println("Introduce el valor del número b");
int b = ejercicio.nextInt();
// Realizamos la operación de ambas variables y las mostramos por pantalla
System.out.println("El resultado de multiplicar es " + (a*b)); scanner.close();
}
}
Cierre del Scanner
Cerrar el objeto Scanner es una práctica crucial en Java para liberar los recursos asociados con la entrada de datos. Cuando terminas de utilizar un Scanner, especialmente si está leyendo desde System.in, debes cerrarlo con el método close(). Esto no solo ayuda a liberar memoria, sino que también previene posibles problemas de seguridad y fugas de recursos. El cierre adecuado del Scanner garantiza que el programa maneje los recursos del sistema de manera eficiente y responsable. Por ejemplo, al final de tu programa, puedes utilizar scanner.close(); para cerrar correctamente el objeto Scanner.
Resumen de lo aprendido
En Java, una clase es como el diseño de un edificio: define la estructura y organiza las partes del programa. La clase Main es donde todo comienza, es decir, el punto de entrada del programa. Cuando escribimos public class Main, estamos diciendo que esta clase es accesible desde cualquier parte del código.
Dentro de la clase Main, el método public static void main(String[] args) es fundamental porque es el primer lugar donde el programa empieza a ejecutarse. Aquí te explico cada parte de este método:
public: Esto significa que el método puede ser utilizado desde cualquier lugar del programa.
static: Significa que este método pertenece directamente a la clase y no a un objeto creado a partir de la clase.
void: Indica que el método no devolverá ningún valor.
main: Es el nombre del método que siempre busca Java al iniciar un programa.
String[] args: Es un arreglo que puede contener argumentos proporcionados cuando el programa se ejecuta.
El principal concepto que se explica en este tema es la introducción de datos por teclado. Para ello utilizamos la clase Scanner. Esta clase facilita la lectura de datos como números y texto desde el teclado.
Para utilizar Scanner, primero se necesita «importar» la clase. Luego, se crea el Scanner en sí, y después lo llamamos en la parte exacta del programa donde lo necesitamos. Dependiendo del tipo de dato que estamos manejando, el código que utilizamos para llamar al Scanner será diferente. Por último, hay que recordar que es importante cerrar el Scanner al terminar, para liberar los recursos que estaba utilizando.
En resumen, ahora ya entiendes cómo funciona una clase en Java y cómo manejar la entrada de datos con Scanner. Y si aún no te ha quedado claro del todo, ahora te propongo unos ejercicios que definitivamente despejarán tus dudas.