Comportamiento inesperado de entrada estándar de Java y salida a través de la clase del analizador

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:

datos TypeMethod

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


Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *