image

Acesse bootcamps ilimitados e +650 cursos

50
%OFF
Article image
Jonathan Santos
Jonathan Santos12/09/2023 07:27
Compartilhe

Limpeza de Buffer com Scanner em Java

    Seu código tá certinho e de repente um Scanner.next() retorna vazio?

    A classe Scanner do Java é uma ferramenta útil para lidar com a entrada do usuário. No entanto, ao usá-la, você pode encontrar problemas se não limpar o buffer de entrada corretamente.

    O que é o Buffer?

    O buffer é uma área de armazenamento temporário na memória do computador que é usada para guardar dados enquanto eles estão sendo transferidos de um lugar para outro. Em Java, quando você usa a classe Scanner para ler a entrada do usuário, os dados são primeiro colocados no buffer antes de serem processados.

    Por que limpar o Buffer?

    Se você não limpar o buffer após ler a entrada do usuário, os dados antigos ainda estarão presentes no buffer na próxima vez que você tentar ler a entrada. Isso pode causar problemas, pois você pode acabar lendo dados antigos em vez dos novos dados que o usuário acabou de inserir.

    Como limpar o Buffer?

    Em Java, você pode limpar o buffer chamando o método nextLine() da classe Scanner após cada chamada para nextInt()nextDouble(), etc. Aqui está um exemplo:

    import java.util.Scanner;
    
    public class Main {
      public static void main(String[] args) {
          Scanner scanner = new Scanner(System.in);
    
          System.out.println("Digite um número: ");
          int number = scanner.nextInt();
    
          scanner.nextLine();  // Limpa o buffer
    
          System.out.println("Digite uma linha de texto: ");
          String text = scanner.nextLine();
    
          System.out.println("Número: " + number);
          System.out.println("Texto: " + text);
      }
    }
    

    Copiar

    Neste exemplo, após ler um número inteiro do usuário com nextInt(), chamamos nextLine() para limpar o buffer antes de ler uma linha de texto com nextLine(). Isso garante que a linha de texto não seja contaminada por qualquer dado residual no buffer após a chamada para nextInt().

    Espero que este artigo tenha ajudado a entender como e por que limpar o buffer ao usar a classe Scanner em Java!

    Compartilhe
    Comentários (1)
    Tálison Ferreira
    Tálison Ferreira - 12/09/2023 13:27

    Boa!