
En este apartado se tratan la salida a pantalla y la entrada del teclado, E/S de consola. Desde la versión 5.0 y posteriores incorpora la clase Scanner definida en el paquete java.util muy adecuada para entrada por consola.
Salida a la consola
Java utiliza paquetes y sentencias de importación (import). Los paquetes son biblioteca de clases Java. Las sentencias de importación ponen disponibles las clases del paquete en los programas. Existen dos formas de producir salidas a la pantalla: 1) System.out.println y 2) System.out.printf.
- System.out.println
Ya se ha utilizado anteriormente System.out.println para salida a pantalla.
System.out es un objeto que es una parte del lenguaje Java y println es un método invocado por ese objeto. Cuando se utiliza System.out.println para salida, los datos se proporcionan con un argumento entre paréntesis y la sentencia termina con un punto y coma.
Sintaxis
System.out.println(elemento_1 + elemento_2 + . . . + elemento_n)
Ejemplo
System.out.println(«Bienvenido a Java»);
System.out.println(«Presupuesto = » + cantidad + «euros»);
- System.out.print
La única diferencia entre System.out.println y System.out.print es que con println la siguiente salida salta a una nueva línea, mientras que con print la siguiente salida se sitúa en la misma línea.
Ejemplo
System.out.print(«Veracruz «);
System.out.print(» Puerto La Cruz»);
System.out.print(» y «);
System.out.print(«Playa del Cura «);
producen la siguiente salida
Veracruz Puerto La Cruz y
Playa del Cura
A recordar
System.out.println(. . .); equivale a
System.out.print(. . . + «\n»);
utilizando el carácter de escape \n (salto de linea)
Salida formateada con printf
En la versión 5.0, Java incluyó un método denominado printf, inspirado en la función clásica de la biblioteca C, que se puede utilizar para producir la salida en un formato específico. La sentencia System.out.printf tiene un primer argumento cadena, conocida como especificador de formato y el segundo argumento es el valor de salida en el formato establecido.
System.out.printf(«%8.3f»», x);
imprime x con una anchura de campo de 8 caracteres y una precisión de 3 caracteres.
Ejemplo
double precio = 25.4;
System.out.printf(«$»);
System.out.printf(«%6.2f»,precio);
system.out.printf(» unidad»);
Al ejecutarse las sentencias anteriores visualiza $25.40 unidad. El dato con un ancho de 6 caracteres y 2 caracteres de precisión.
double x = 10000.0/3.0;
System.out.printf(«%9.3f»,x);
Al ejecutarse las sentencias anteriores visualiza x con una anchura de 9 caracteres y una precisión de 3 caracteres (un espacio en blanco a la izquierda y ocho caracteres):
3333.333
Cada uno de los especificadores de formato que comienza con un carácter % se reemplaza con el argumento correspondiente. El carácter de conversión con el que termina un especificador de formato indica el tipo de valor a formatear: f es un número en coma flotante, s es una cadena y d es un entero decimal.
Entrada
Los programas Java construidos hasta el momento no son interactivos ya que no reciben ninguna entrada de datos. En esta sección aprenderemos un método para leer la entrada del usuario.
En la versión 5.0, Java incluyó una clase para simplificar la entrada de datos por el teclado. Esta clase se llama Scanner y se conecta a System.in.
Para leer la entrada de la consola, se debe construir primero un objeto de Scanner, pasando simplemente el objeto System.in al constructor Scanner (más adelante se explicarán los constructores y el operador new en detalle).
Scanner entrada = new Scanner(System.in);
A continuación se pueden utilizar diferentes métodos de la clase Scanner para leer la entrada: nextInt o nextDouble leen el siguiente entero y siguiente valor de coma flotante.
System.out.print(«Introduzca cantidad: «);
int cantidad;
cantidad = entrada.nextInt();
System.out.print(«Introduzca precio: «);
double precio = entrada.nextDouble();
Cuando se llama a uno de los métodos anteriores, el programa espera hasta que el usuario teclea un número y pulsa la tecla Intro (Enter). El método nextLine lee una línea de entrada.
System.out.print(«¿Cual es su nombre?»);
String nombre;
nombre = entrada.nextLine();
El método next se emplea cuando se desea leer una palabra sin espacios.
String apellido = entrada.next();
La clase Scanner está definida en el paquete java.util; en Java siempre que se utiliza una clase que no está definida en el paquete básico java.lang se necesita utilizar una directiva import. La primera línea que se pone cerca del principio del archivo, indica a Java dónde encontrar la definición de la clase Scanner:
import java.util.Scanner
Esta línea significa que la clase Scanner está en el paquete java.util; util es la abreviatura de utility (utilidad o utilería), pero en código Java siempre se utiliza la abreviatura util. Un paquete, como ya conoce el lector, es una biblioteca de clases. La sentencia import pone disponible la clase dentro del programa.
import java.util.Scanner;
/**
Este programa muestra la entrada por consola y ha sido creado
el 26 de enero
*/
public class EntradaTest
{
public static void main (String[] args)
{
Scanner entrada = new Scanner(System.in);
// obtener la primera entrada
System.out.print(«¿Cual es su nombre?»);
String nombre = entrada.nextLine();
// leer la segunda entrada
System.out.print(«¿Cual es su edad?»);
int edad = entrada.nextInt();
// visualizar salida
System.out.println(«Buenos dias » + nombre +
«; años » + edad);
}
}
Sintaxis de entrada de teclado utilizando Scanner
- Hacer disponible la clase Scanner para utilizarla en su código. Incluir la siguiente línea al comienzo del archivo que contiene su programa.
import java.util.Scanner;
- Antes de introducir algo por teclado se debe crear un objeto de la clase Scanner.
Scanner nombreObjeto = new Scanner(System.in);
nombreObjeto es cualquier identificador Java (no palabra reservada).
Scanner teclado = new Scanner(System.in);
- Los métodos nextInt, nextDouble y next leen un valor de tipo int, un valor de tipo double y una palabra, respectivamente.
Sintaxis
variable_int = nombreObjeto.nextInt();
variable_double = nombreObjeto.nextDouble();
variable_cadena = nombreObjeto.next();
variable_cadena = nombreObjeto.nextLine();
Ejemplo
int edad;
edad = teclado.nextInt();
double precio;
precio = teclado.nextDouble();
String rio;
rio = teclado.next();