El método System.console().readLine() funciona bien en modo consola (en una ventana de terminal) pero puede provocar problemas cuando se trabaja con IDEs como Eclipse,Netbeans, JavaEdit, etc. Para evitar estos problemas puedes usar la clase Scanner cuando necesites recoger datos desde teclado. La clase Scanner funciona tanto en entornos integrados como en una ventana de terminal.
1
2
3
4
5
6
7
8
9
10
11
| import java.util.Scanner;
public class LeeDatosScanner01 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Introduce tu nombre: ");
String nombre = s.nextLine();
System.out.print("Introduce tu edad: ");
int edad = Integer.parseInt(s.nextLine());
System.out.println("Tu nombre es " + nombre + " y tu edad es " + edad);
}
}
|
Fíjate que en el programa anterior la sentencias.nextLine()sería el equivalente aSystem.console().readLine()`Mediante el uso de la clase Scanner es posible leer varios datos en una misma línea. En el programa anterior se pedía un nombre y una edad, en total dos datos que había que introducir en líneas separadas. Observa cómo en el siguiente ejemplo se piden esos dos datos en una sola línea y separados por un espacio.
1
2
3
4
5
6
7
8
9
10
| import java.util.Scanner;
public class LeeDatosScanner02 {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Introduce tu nombre y tu edad separados por un espacio: ");
String nombre = s.next();
int edad = s.nextInt();
System.out.println("Tu nombre es " + nombre + " y tu edad es " + edad);
}
}
|
Fíjate cómo se ha utilizado s.next() para leer una cadena de caracteres y s.nextInt() para leer un número entero, todo ello en la misma línea. El siguiente programa de ejemplo calcula la media de tres números decimales. Para leer cada uno de los números en la misma línea se utiliza s.nextDouble.
1
2
3
4
5
6
7
8
9
10
11
12
13
| import java.util.Scanner;
public class LeeDatosScannerMedia {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
System.out.print("Introduce tres números (pueden contener decimales) separados por esp\
acios: ");
double x1 = s.nextDouble();
double x2 = s.nextDouble();
double x3 = s.nextDouble();
double media = (x1 + x2 + x3) / 3;
System.out.println("La media de esos tres números es " + media);
}
}
|
0 Comment to "La clase Scanner en java"
Publicar un comentario