Limpar Scanner em Java
-
Java Clear Scanner utilizando o
nextLine() -
Criar um novo objecto
Scannerpara limpar oScannerem 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:

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 Saini is an android developer, who also works sometimes as a web developer., He likes to read books and write about various things.
LinkedIn