Limpar Scanner em Java

Rupam Yadav 12 outubro 2023
  1. Java Clear Scanner utilizando o nextLine()
  2. Criar um novo objecto Scanner para limpar o Scanner em Java
Limpar Scanner em Java

A classe Scanner em Java é muitas vezes utilizada para receber entrada ou saída. Criamos um objecto da classe Scanner para utilizar as suas funções.

Não podemos utilizar o método close() de Scanner porque uma vez fechado um Scanner por este método, não podemos obter input uma vez que o fluxo de entrada foi fechado.

Existem outras formas de limpar o Scanner em Java, e abaixo estão os exemplos que explicam estes métodos.

Java Clear Scanner utilizando o nextLine()

Para limpar o Scanner e para o utilizar novamente sem o destruir, podemos utilizar o método nextLine() da classe Scanner, que escaneia a linha actual e depois coloca o Scanner na linha seguinte para realizar quaisquer outras operações na nova linha.

No exemplo abaixo, dentro do laço while, pedimos ao utilizador uma entrada e verificamos se é um binário válido utilizando hasNextInt(radix). Se for um binário válido, então será guardado na variável binary, e se não for um valor binário, então será impressa uma mensagem para pedir ao utilizador que introduza um valor binário válido.

Nesta situação, se não limparmos o Scanner, o laço nunca terminará. Se o valor não for binário, então o Scanner deve ir para uma nova linha para receber uma nova entrada. É por isso que o nextLine() é utilizado para saltar a linha actual e ir para uma nova linha.

import java.util.Scanner;

public class ClearScanner {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int binary = 0;
    int radix = 2;

    while (binary == 0) {
      System.out.print("Please input a valid binary: ");

      if (input.hasNextInt(radix)) {
        binary = input.nextInt(radix);
      } else {
        System.out.println("Not a Valid Binary");
      }
      input.nextLine();
    }

    System.out.print("Converted Binary: " + binary);
  }
}

Resultado:

Scanner claro Java

Criar um novo objecto Scanner para limpar o Scanner em Java

Outro método para limpar o Scanner é criar um novo objecto Scanner quando o utilizador digita um valor que não seja um valor binário. Este método funciona porque quando um novo objecto é criado, o objecto existente Scanner é limpo, e um novo fluxo de entrada é iniciado.

import java.util.Scanner;

public class ClearScanner {
  public static void main(String[] args) {
    Scanner input = new Scanner(System.in);
    int binary = 0;
    int radix = 2;

    while (binary == 0) {
      System.out.print("Please input a valid binary: ");

      if (input.hasNextInt(radix)) {
        binary = input.nextInt(radix);
      } else {
        System.out.println("Not a Valid Binary");
      }

      input = new Scanner(System.in);
    }

    System.out.print("Converted Binary: " + binary);
  }
}

Resultado:

Please input a valid binary: 23
Not a Valid Binary
Please input a valid binary: 11101
Converted Binary: 29
Rupam Yadav avatar Rupam Yadav avatar

Rupam Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.

LinkedIn

Artigo relacionado - Java Scanner