Entrada y salida con Scanner
Hasta ahora los datos estaban escritos en el programa. Para conversar con quien lo ejecuta necesitamos mostrar preguntas y leer respuestas.
Mostrar información
println termina la línea; print deja el cursor a continuación:
System.out.print("Nombre: ");
System.out.println("Ada");
Leer desde la consola
import java.util.Scanner;
public class Presentacion {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("¿Cómo te llamas? ");
String nombre = entrada.nextLine();
System.out.println("Hola, " + nombre);
entrada.close();
}
}
El import permite usar Scanner; la variable entrada representa el lector conectado a la entrada estándar. No necesitamos estudiar todavía objetos ni imports en profundidad.
Métodos habituales
nextLine()lee una línea completa como texto.nextInt()lee un entero.nextDouble()lee un decimal.nextBoolean()lee los valorestrueofalse.
System.out.print("Edad: ");
int edad = entrada.nextInt();
System.out.print("Altura en metros: ");
double altura = entrada.nextDouble();
System.out.print("¿Tienes experiencia? (true/false): ");
boolean tieneExperiencia = entrada.nextBoolean();
El separador decimal que acepta nextDouble() depende de la configuración regional de Java. Usa el formato esperado por tu entorno.
El salto de línea pendiente
Al pulsar Enter después de nextInt(), el número se consume, pero el salto de línea queda pendiente. El siguiente nextLine() podría leerlo como una línea vacía:
int edad = entrada.nextInt();
entrada.nextLine(); // consume el Enter pendiente
String ciudad = entrada.nextLine();
Otra estrategia sencilla es leer todo con nextLine() y convertirlo, pero el tratamiento de entradas no numéricas se estudiará más adelante.
Programa interactivo
import java.util.Scanner;
public class Reserva {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Nombre: ");
String nombre = entrada.nextLine();
System.out.print("Número de personas: ");
int personas = entrada.nextInt();
System.out.print("Precio por persona: ");
double precio = entrada.nextDouble();
double total = personas * precio;
System.out.println("Reserva de " + nombre + ": " + total + " €");
entrada.close();
}
}
Práctica
Crea una ficha que pida edad y ciudad y muestre ambas. Incluye la corrección del salto pendiente.
Solución:
import java.util.Scanner;
public class Ficha {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
System.out.print("Edad: ");
int edad = entrada.nextInt();
entrada.nextLine();
System.out.print("Ciudad: ");
String ciudad = entrada.nextLine();
System.out.println("Edad: " + edad + ", ciudad: " + ciudad);
entrada.close();
}
}
Si se introduce texto donde nextInt() espera un entero, el programa termina con un error. En Java 0 indicaremos claramente el formato esperado; la gestión de excepciones queda para más adelante.
Ya podemos recibir datos reales. En la siguiente unidad los usaremos para tomar decisiones.