¿Cuál es el resultado del siguiente programa?
import java.util.Scanner; public class Looking { public static void main(String[] args){ String input = "1 2 a 3 45 6"; Scanner sc = new Scanner(input); int x = 0; do{ x = sc.nextInt(); System.out.print(x + " "); }while(x != 0); } } |
El siguiente es el resultado:
run: Exception in thread "main" java.util.InputMismatchException at java.util.Scanner.throwFor(Scanner.java:840) at java.util.Scanner.next(Scanner.java:1461) at java.util.Scanner.nextInt(Scanner.java:2091) at java.util.Scanner.nextInt(Scanner.java:2050) at Looking.main(Looking.java:19) 1 2 Java Result: 1 BUILD SUCCESSFUL (total time: 0 seconds) |
Los métodos nextXxx () generalmente se invocan después de una llamada a hasNextXxx (), que determina si el siguiente token es del tipo correcto. Aquí no existe tal método, por lo que se lanza una excepción. (Java.util.InputMismatchException)
El siguiente es el código corregido:
public class Looking { public static void main(String[] args){ String input = "1 2 a 3 45 6"; Scanner sc = new Scanner(input); int x = 0; while(sc.hasNextInt()){ x = sc.nextInt(); System.out.print(x + " "); } } } |
El resultado es:
run: 1 2 BUILD SUCCESSFUL (total time: 0 seconds) |