el momento de utilizar el método Scanner.nextLine ()

Jason Chi Huang Han:

De P.40 del libro de texto 'Estructuras de Datos y Algoritmos en Java, 6 / E' (el código se revisó ligeramente):

Scanner scanner = new Scanner(System.in);
System.out.print("Please enter an integer: ");
while (!scanner.hasNextInt()) {
    scanner.nextLine();
    System.out.print("Invalid int; pls enter an int: ");
}
int i = scanner.nextInt();
System.out.print(i);

Si escribe un valor no entero (Es decir: 1,0) por System.in, sería entrar en el cuerpo del bucle, mientras que desde el booleano de !scanner.hasNextInt()que es cierto.

Sin embargo no entiendo la sintaxis de este ser autor en otra línea de scanner.nextLine();dentro del bucle, mientras que en la línea 4, tampoco genera algo? ¿Por qué no funciona el programa si eliminar la scanner.nextLine();línea? (y de alguna manera la memoria del PC casi se llena después de eliminarlo ..)

absolutelydevastated:

Lo dijo @Guy es correcta. La hasNextllamada de función no hace nada para avanzar el puntero de entrada. hasNextIntcomprueba si su próxima entrada es un número entero, pero para avanzar a la siguiente línea después de esta entrada, es necesario llamar a una nextfunción. De lo contrario, siempre va a controlar hasNextInten su entrada no entero, de entrar en un bucle infinito, por lo que su uso de memoria es muy alta.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=230003&siteId=1
Recomendado
Clasificación