Saltar al contenido

¿Cómo usar hasNext() de la clase Scanner?

Estate atento porque en esta reseña vas a hallar la contestación que buscas.

Solución:

Tu código no funciona porque creas un nuevo Scanner objeto en cada llamada recursiva. De todos modos, no debe usar la recursividad para esto, hágalo de forma iterativa.

versión iterativa

public class Solution 

    public static void main(String[] args) 

        Scanner s = new Scanner(System.in);
        int count = 1;

        while(s.hasNext()) 
            String ns = s.nextLine();
            System.out.println(count + " " + ns);
            count++;
        
    

Versión recursiva

public class Solution 

    private Scanner s;

    public static void main(String[] args) 

        s = new Scanner(System.in); // initialize only once
        check(1);
    

    public static void check(int count) 
        if(s.hasNext()) 
            String ns = s.nextLine();
            System.out.println(count + " " + ns);
            check(count + 1);
        
       

Cambio

if (s.hasNext() == true) 
    String ns = s.nextLine();
    System.out.println(count + " " + ns);
    count++;
    System.out.print(count);
    check(count);

a:

while (s.hasNext()) 
    String ns = s.nextLine();
    System.out.println(count + " " + ns);
    count++;
    System.out.print(count);
    check(count);

while bucles continúa hasta que los datos existen, donde como if cheques por una sola vez.

Comentarios y valoraciones

Tienes la opción de añadir valor a nuestra información cooperando tu veteranía en las explicaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

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