Aprender: Java escáner class , sus métodos y su comportamiento inesperado. Este artículo explicará acerca de los diferentes métodos de escáner Class y sus métodos .
El método más común de tomar una entrada en un programa java es a través del escáner Class que se importa de la Java Utilidad Class mediante la instrucción dada a continuación.
import java.util.Scanner;
la entrada se da con el flujo de entrada ayuda System.in
Sintaxis:
Scanner KB=new Scanner(System.in);
Hay diferentes métodos de entrada proporcionados en escáner Package class diferentes tipos de datos primitivos tales como:
Entero | nextInt () |
class | nextDouble () |
for | nextLong () |
class | nextFloat () |
class | NextByte () |
cadena | nextLine () / * permite espacios entre un String * / next () / * Won ‘t permite espacios entre una cadena * / |
Considere el programa:
import java.util.Scanner;
class UnexpectedBehaviour
{
public static void main(String args[])
{
Scanner KB=new Scanner(System.in);
int i;
float f;
String s;
i=KB.nextInt();
f=KB.nextFloat();
s=KB.nextLine();
System.out.println("Output String is : "+s);
System.out.println("Output Integer is : "+i);
System.out.println("Output Float is : "+f);
}
}
salida
1
8.8
Output String is :
Output Integer is : 1
Output Float is : 8.8
Pero surge este comportamiento inesperado cuando usamos nextLine () método justo después de la próxima método de tipos de datos que no sean de cuerda, tales como nextInt () , nextDouble () , nextFloat ( ) etc. los métodos específicos leen tokens específicas y así, en la arriba a la derecha programa después KB.nextFloat () el carácter de nueva línea será todavía en la memoria intermedia de entrada y método de String toma la entrada de la parte restante de nextFloat () que se nada en el Double anteriormente.
Para abordar el problema dado añadimos KB.nextLine () justo encima s = KB.nextLine ();
Considere el programa:
import java.util.Scanner;
class UnexpectedBehaviour
{
public static void main(String args[])
{
Scanner KB=new Scanner(System.in);
int i;
float f;
String s;
i=KB.nextInt();
f=KB.nextFloat();
KB.nextLine();
s=KB.nextLine();
System.out.println("Output String is : "+s);
System.out.println("Output Integer is : "+i);
System.out.println("Output Float is : "+f);
}
}
salida
1
8.8
Java is Cool !
Output String is : Java is Cool !
Output Integer is : 1
Output Float is : 8.8