Java permite realizar operaciones de entrada / salida de consola a través de tres variables publicas y estáticas de la clase java.lang.System.
- System.out; es una objeto de tipo PrintStream. Es la salida estándar por consola
- System.in; es un objeto de tipo InputStream. Es la entrada estándar.
- System.err; es un objeto de tipo PrintStream. Es la salida estándar para mostrar errores.
Para realizar impresiones por consola utilizamos los métodos:
- print(); Imprime un argumento.
- println(); Imprime un argumento y añade un carácter de salto de línea («\n»).
- printf(); Imprime con formato. Los diferentes formatos a utilizar los mostramos en la siguiente tabla.
| Código | Descripción |
| %s | Formatea el argumento como String. Normalmente se invoca al método toString(). |
| %d %o %x | Formatea un entero como decimal, octal o hexadecimal respectivamente. |
| %f %g | Formatea en coma flotante. %g formato con notación científica |
| %n | Provoca un salto de línea. |
| %% | Lo utilizamos para añadir el carácter % |
Ejemplo: Imprimimos los datos de un alumno, cada código de formato se sustituye por el valor devuelto por los métodos get respectivamente.
|
1 2 |
System.out.printf("Nombre = %s %s ID = %d Nota Media = %.1f\n", s.getNombre(), s.getApellido(), s.alumnoID(), s.getMedia()); |
%.1f estamos expresando que queremos mostrar la nota media con un solo decimal. El siguiente ejemplo nos permite leer datos por consola.
La Clase Scanner
En el primer tema ya hemos hablado de la clase Scanner y que nos simplifica enormemente tareas de entrada o lectura de datos. Como su nombre indica, actúa como un lector exclusivamente, no puede realizar operaciones de escritura.
Podemos leer con un objeto de la clase Scanner desde diversas fuentes y el origen de los datos se especifica a través del parámetro del constructor de la clase de Scanner.
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner s = new Scanner(System.in); System.out.println("Introduce tu nombre: "); String nombre = s.nextLine(); System.out.println("Introduce edad: "); int edad = s.nextInt(); System.out.println("Te llamas " + nombre + " y tienes " + edad + " anyos" ); } } |
Con un objeto de la clase Scanner podemos leer:
- Desde un String. String texto = «Este es el texto que será leído por un objeto Scanner»; Scanner lector = new Scanner(texto); El origen de la lectura es un String.
- Desde el teclado. Scanner lector = new Scanner(System.in); El origen de la lectura es el teclado.
- Desde un fichero de texto. Scanner lector = new Scanner(New File(«peliculas.txt»)); El origen de la lectura es un archivo.
Scanner fragmenta los datos a leer y los va recuperando por medio de los métodos next(), nextLine(), nextInt(), nextFloat(), etc. En los siguientes apartados irás descubriendo aplicaciones prácticas del uso de la clase Scanner.
Ejemplos:
Leer un String palabra a palabra:
|
1 2 3 4 5 6 7 8 9 10 11 12 |
import java.util.Scanner; public class Principal { public static void main(String args[]) { S tring texto = "La cripta mágica"; Scanner lector = new Scanner(texto); while (lector.hasNext()){ System.out.println(lector.next()); } lector.close(); } } |
Leer un String línea a línea:
|
1 2 3 4 5 6 7 8 9 10 |
import java.util.Scanner; public class Principal { public static void main(String args[]) { String texto="Frodo Bolsón\nSamsagaz Gamyi\nPeregrin Tuk\nMeriadoc Brandigamo"; Scanner lector = new Scanner(texto); while (lector.hasNext()){ System.out.println(lector.nextLine()); } lector.close(); } } |
Leer un String según separador personalizado:
|
1 2 3 4 5 6 7 8 9 10 11 |
import java.util.Scanner; public class Principal { public static void main(String args[]) { String texto="80;25;48;56;38;46"; Scanner lector = new Scanner(texto); lector.useDelimiter(";"); while (lector.hasNext()){ int num = lector.nextInt(); System.out.println(num); } lector.close(); } } |
Lectura de ficheros de texto :
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
import java.io.File; import java.io.FileNotFoundException; import java.util.Scanner; public class Principal { public static void main(String args[]) throws FileNotFoundException { File fichero = new File("C:\\cine\\peliculas.txt"); if (!fichero.exists()) { // Si no existe el fichero System.out.println("El fichero no existe"); return; } Scanner lector = new Scanner(fichero); while (lector.hasNext()) { String linea = lector.nextLine(); System.out.println(linea); } lector.close(); } } |