Neste tutorial, aprenderemos sobre o Java Scanner e seus métodos com a ajuda de exemplos.
A Scanner
classe do java.util
pacote é usada para ler dados de entrada de diferentes fontes, como fluxos de entrada, usuários, arquivos, etc. Vamos dar um exemplo.
Exemplo 1: ler uma linha de texto usando um scanner
import java.util.Scanner; class Main ( public static void main(String() args) ( // creates an object of Scanner Scanner input = new Scanner(System.in); System.out.print("Enter your name: "); // takes input from the keyboard String name = input.nextLine(); // prints the name System.out.println("My name is " + name); // closes the scanner input.close(); ) )
Resultado
Digite seu nome: Kelvin Meu nome é Kelvin
No exemplo acima, observe a linha
Scanner input = new Scanner(System.in);
Aqui, criamos um objeto de Scanner
entrada nomeada.
O System.in
parâmetro é usado para obter a entrada da entrada padrão. Funciona da mesma forma que receber entradas do teclado.
Em seguida, usamos o nextLine()
método da Scanner
classe para ler uma linha de texto do usuário.
Agora que você tem alguma ideia Scanner
, vamos explorar mais a respeito.
Importar classe de scanner
Como podemos ver no exemplo acima, precisamos importar o java.util.Scanner
pacote antes de usar a Scanner
classe.
import java.util.Scanner;
Para saber mais sobre como importar pacotes, visite Pacotes Java.
Crie um objeto Scanner em Java
Depois de importar o pacote, aqui está como podemos criar Scanner
objetos.
// read input from the input stream Scanner sc1 = new Scanner(InputStream input); // read input from files Scanner sc2 = new Scanner(File file); // read input from a string Scanner sc3 = new Scanner(String str);
Aqui, criamos objetos da Scanner
classe que lerão a entrada de InputStream, File e String, respectivamente.
Métodos de scanner Java para obter informações
A Scanner
classe fornece vários métodos que nos permitem ler entradas de diferentes tipos.
Método | Descrição |
---|---|
nextInt() | lê um int valor do usuário |
nextFloat() | lê um float valor do usuário |
nextBoolean() | lê um boolean valor do usuário |
nextLine() | lê uma linha de texto do usuário |
next() | lê uma palavra do usuário |
nextByte() | lê um byte valor do usuário |
nextDouble() | lê um doubl valor e do usuário |
nextShort() | lê um short valor do usuário |
nextLong() | lê um long valor do usuário |
Exemplo 2: Java Scanner nextInt ()
import java.util.Scanner; class Main ( public static void main(String() args) ( // creates a Scanner object Scanner input = new Scanner(System.in); System.out.println("Enter an integer: "); // reads an int value int data1 = input.nextInt(); System.out.println("Using nextInt(): " + data1); input.close(); ) )
Resultado
Insira um número inteiro: 22 Usando nextInt (): 22
No exemplo acima, usamos o nextInt()
método para ler um valor inteiro.
Exemplo 3: Java Scanner nextDouble ()
import java.util.Scanner; class Main ( public static void main(String() args) ( // creates an object of Scanner Scanner input = new Scanner(System.in); System.out.print("Enter Double value: "); // reads the double value double value = input.nextDouble(); System.out.println("Using nextDouble(): " + value); input.close(); ) )
Resultado
Insira o valor duplo: 33,33 Usando nextDouble (): 33,33
No exemplo acima, usamos o nextDouble()
método para ler um valor de ponto flutuante.
Exemplo 4: Java Scanner next ()
import java.util.Scanner; class Main ( public static void main(String() args) ( // creates an object of Scanner Scanner input = new Scanner(System.in); System.out.print("Enter your name: "); // reads the entire word String value = input.next(); System.out.println("Using next(): " + value); input.close(); ) )
Resultado
Digite seu nome: Jonny Walker Usando next (): Jonny
No exemplo acima, usamos o next()
método para ler uma string do usuário.
Aqui, fornecemos o nome completo. No entanto, o next()
método lê apenas o primeiro nome.
Isso ocorre porque o next()
método lê a entrada até o caractere de espaço em branco . Quando o espaço em branco é encontrado, ele retorna a string (excluindo o espaço em branco).
Exemplo 5: Java Scanner nextLine ()
import java.util.Scanner; class Main ( public static void main(String() args) ( // creates an object of Scanner Scanner input = new Scanner(System.in); System.out.print("Enter your name: "); // reads the entire line String value = input.nextLine(); System.out.println("Using nextLine(): " + value); input.close(); ) )
Resultado
Digite seu nome: Jonny Walker Usando nextLine (): Jonny Walker
No primeiro exemplo, usamos o nextLine()
método para ler uma string do usuário.
Ao contrário next()
, o nextLine()
método lê toda a linha de entrada, incluindo espaços. O método é encerrado quando encontra um caractere de próxima linha ,.
Recommended Reading: Java Scanner skipping the nextLine().
Java Scanner with BigInteger and BigDecimal
Java scanner can also be used to read the big integer and big decimal numbers.
- nextBigInteger() - reads the big integer value from the user
- nextBigDecimal() - reads the big decimal value from the user
Example 4: Read BigInteger and BigDecimal
import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; class Main ( public static void main(String() args) ( // creates an object of Scanner Scanner input = new Scanner(System.in); System.out.print("Enter a big integer: "); // reads the big integer BigInteger value1 = input.nextBigInteger(); System.out.println("Using nextBigInteger(): " + value1); System.out.print("Enter a big decimal: "); // reads the big decimal BigDecimal value2 = input.nextBigDecimal(); System.out.println("Using nextBigDecimal(): " + value2); input.close(); ) )
Output
Enter a big integer: 987654321 Using nextBigInteger(): 987654321 Enter a big decimal: 9.55555 Using nextBigDecimal(): 9.55555
In the above example, we have used the java.math.BigInteger
and java.math.BigDecimal
package to read BigInteger
and BigDecimal
respectively.
Working of Java Scanner
A Scanner
classe lê uma linha inteira e divide a linha em tokens. Tokens são pequenos elementos que têm algum significado para o compilador Java. Por exemplo,
Suponha que haja uma string de entrada:
He is 22
Nesse caso, o objeto do scanner lerá a linha inteira e dividirá a string em tokens: " He ", " is " e " 22 ". O objeto então itera sobre cada token e lê cada um usando seus diferentes métodos.
Nota : Por padrão, o espaço em branco é usado para dividir tokens.