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