Herramientas de usuario

Herramientas del sitio


bloque2:scanner

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anteriorRevisión previa
Próxima revisión
Revisión previa
bloque2:scanner [10/10/2018 15:17] – [Limpiar buffer de lectura] Fernando Valdeónbloque2:scanner [16/09/2024 20:53] (actual) – editor externo 127.0.0.1
Línea 7: Línea 7:
  
 <code java> <code java>
-package nombrePaquete; //si existe paquete +package nombrePaquete; //si mi clase está dentro de un paquete 
  
 import java.util.Scanner; import java.util.Scanner;
Línea 19: Línea 19:
  
 //Cerrar siempre el scanner //Cerrar siempre el scanner
-input.close+input.close();
 </code> </code>
  
-**IMPORTANTE**: El método ''close()'' no cierra el Scanner, sino que cierra el flujo de entrada ''System.in''. Cualquier lectura posterior desde ese flujo, lanzará una excepción.+**IMPORTANTE**: El método ''close()'' no cierra el Scanner, sino que cierra el flujo de entrada ''System.in''. Cualquier lectura posterior desde ese flujo (System.in), lanzará una excepción.
  
 ==== Tipos de flujos de entrada ==== ==== Tipos de flujos de entrada ====
Línea 46: Línea 46:
  
  
-No podemos leer un ''char'', pero podemos coger el primer caracter de un String+No podemos leer un ''char'', pero podemos leerlo como String y coger el primer caracter. 
  
 <code java> <code java>
 char caracter = input.nextLine().charAt(0); char caracter = input.nextLine().charAt(0);
 +
 +//Que es lo mismo que:
 +String cadena = input.nextLine();
 +char caracter = cadena.charAt(0);
  
 </code> </code>
Línea 82: Línea 86:
 //Por ejemplo la cadena: "4 o 5 palabras cortas" //Por ejemplo la cadena: "4 o 5 palabras cortas"
  
-int num = input.nextInt();   //lee el "4" como tipo int +int num = input.nextInt();   //leo el "4" como tipo int 
-String cadena1 = next();     //lee la "o" como tipo String +String cadena1 = next();     //leo la "o" como tipo String 
-String cadena2 = next();     //lee el "5" como tipo String +String cadena2 = next();     //leo el "5" como tipo String 
-String cadena3 = nextLine(); //lee hasta encontrar un intro: "palabras cortas"+String cadena3 = nextLine(); //leo hasta encontrar un intro: "palabras cortas"
  
 </code> </code>
Línea 91: Línea 95:
 ===== Limpiar buffer de lectura ===== ===== Limpiar buffer de lectura =====
 Cada vez que introducimos datos por teclado terminamos presionando ''intro''. Cada vez que introducimos datos por teclado terminamos presionando ''intro''.
-Scanner guarda en el //buffer de entrada// todos los caracteres introducidos, incluido el caracter ''intro''.+Scanner guarda en el //buffer de entrada// todos los caracteres introducidos, incluido la tecla ''intro''.
  
 Buffer de entrada al introducir el numero 53: Buffer de entrada al introducir el numero 53:
 <code java> <code java>
 // Estado del buffer de entrada: // Estado del buffer de entrada:
-"53\n" -> \n representa el caracter enter+"53\n" -> \n representa la tecla enter
  
 int numero = input.nextInt(); int numero = input.nextInt();
  
-//Estado del buffer de entrada+//Estado del buffer de entrada después de leer el int
 "\n" "\n"
  
 String cadena = input.nextLine();  String cadena = input.nextLine(); 
-//Leerá el caracter enter, y obtenemos una cadena vacía "".+//Leerá hasta encontrar el enter, y obtenemos una cadena vacía "".
 </code> </code>
  
  
-Siempre que vaya a leer un String después de haber leido un número, **debemos //limpiar// el buffer de entrada** antes de leer el String llamando al método:+Siempre que vaya a leer un String después de haber leido un número, **debemos //limpiar// el buffer de entrada** antes de leer el Stringllamando al método:
 <code java> <code java>
 input.nextLine(); input.nextLine();
Línea 154: Línea 158:
 </code> </code>
  
 +----
 +
 +{{ vimeo>295702626?medium }}
  
 ---- ----
bloque2/scanner.1539184631.txt.gz · Última modificación: 16/09/2024 20:53 (editor externo)