English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Neste tutorial, vamos aprender sobre o Java Scanner e seus métodos com exemplos.
A classe PrintWriter do pacote java.io pode ser usada para escrever dados de saída em um formato legível (texto).
A classe Scanner do pacote java.util é usada para ler dados de entrada de diferentes fontes (por exemplo, fluxo de entrada, usuário, arquivo, etc.). Vamos dar um exemplo.
import java.util.Scanner; class Main { public static void main(String[] args) { //Criar um objeto Scanner Scanner input = new Scanner(System.in); System.out.print("Insira o nome: "); // Receber entrada do teclado String name = input.nextLine(); // Imprimir a saída do nome System.out.println("Meu nome é " + name); // Fecha o scanner input.close(); } }
Output Result
Insira o nome: Jack Meu nome é Jack
No exemplo acima, note as seguintes linhas
Scanner input = new Scanner(System.in);
Aqui, criamos um objeto Scanner chamado input.
O parâmetro System.in é usado para obter entrada a partir da entrada padrão. É como obter entrada da tecla.
Em seguida, usamos o método nextLine() da classe Scanner para ler uma linha de texto do usuário.
Agora que você tem alguma compreensão sobre o Scanner, vamos explorá-lo mais profundamente.
Como pode ser visto no exemplo acima, precisamos importar o pacote java.util.Scanner antes de poder usar a classe Scanner.
import java.util.Scanner;
Como mencionado anteriormente, após a importação do pacote, é possível criar o objeto Scanner.
//Ler entrada de fluxo de entrada Scanner sc1 = new Scanner(InputStream input); //Ler entrada de arquivo Scanner sc2 = new Scanner(File file); //Ler entrada de string Scanner sc3 = new Scanner(String str);
Aqui, criamos objetos da classe Scanner, que serão usados para ler entrada deInputStream,leitura de entrada de arquivo e string.
A classe Scanner do Java oferece vários métodos que nos permitem ler diferentes tipos de entrada.
Método | Descrição |
---|---|
nextInt() | Ler valor int do usuário |
nextFloat() | Ler valor float do usuário |
nextBoolean() | Ler valor booleano do usuário |
nextLine() | Ler uma linha de texto do usuário |
next() | Ler uma palavra do usuário |
nextByte() | Ler valor byte do usuário |
nextDouble() | Ler valor double do usuário |
nextShort() | Ler valor short do usuário |
nextLong() | Ler valor long do usuário |
import java.util.Scanner; class Main { public static void main(String[] args) { //Criar objeto scanner Scanner input = new Scanner(System.in); System.out.println("Inserir um inteiro: ") //Ler um valor int int data1 = input.nextInt(); System.out.println("Usando nextInt(): ") + data1); input.close(); } }
Output Result
Inserir um inteiro: 22 Usando nextInt(): 22
No exemplo acima, usamos o método nextInt() para ler valores inteiros.
import java.util.Scanner; class Main { public static void main(String[] args) { //Criar um objeto Scanner Scanner input = new Scanner(System.in); System.out.print("Inserir valor de precisão dupla: ") //Ler valor de precisão dupla double value = input.nextDouble(); System.out.println("Usando nextDouble(): ") + value); input.close(); } }
Output Result
Inserir valor de precisão dupla: 33.33 Usando nextDouble(): 33.33
No exemplo acima, usamos o método nextDouble() para ler valores de ponto flutuante.
import java.util.Scanner; class Main { public static void main(String[] args) { //Criar um objeto Scanner Scanner input = new Scanner(System.in); System.out.print("Digite seu nome: "); //Ler todo o palavras String value = input.next(); System.out.println("Usando next(): ") + value); input.close(); } }
Output Result
Digite seu nome: Jonny Walker Usando next(): Jonny
No exemplo acima, usamos o método next() para ler uma string do usuário.
Aqui, fornecemos o nome completo. No entanto, o método next() apenas lê o nome.
Isso é porque o método next() lê a entrada atéespaçoscaracteres. Assim que encontra um espaço, retorna a string (sem espaços).
import java.util.Scanner; class Main { public static void main(String[] args) { //Criar um objeto Scanner Scanner input = new Scanner(System.in); System.out.print("Digite seu nome: "); //Ler linha inteira String value = input.nextLine(); System.out.println("Usando nextLine(): "); + value); input.close(); } }
Output Result
Digite seu nome: Jonny Walker Usando nextLine(): Jonny Walker
No primeiro exemplo, usamos o método nextLine() para ler uma string do usuário.
Diferente de next(), o método nextLine() lê a linha de entrada inteira, incluindo espaços. O método termina quando encontra o caractere de nova linha \n.
O scanner Java pode ser usado para ler BigInteger e BigDecimal.
nextBigInteger() - Ler valor BigInteger do usuário
nextBigDecimal() - Ler valor BigDecimal do usuário
import java.math.BigDecimal; import java.math.BigInteger; import java.util.Scanner; class Main { public static void main(String[] args) { //Criar um objeto Scanner Scanner input = new Scanner(System.in); System.out.print("Digite um BigInteger: "); //Ler BigInteger BigInteger value1 = input.nextBigInteger(); System.out.println("Usando nextBigInteger(): "); + value1); System.out.print("Digite um BigDecimal: "); //Ler BigDecimal BigDecimal value2 = input.nextBigDecimal(); System.out.println("Using nextBigDecimal(): ") + value2); input.close(); } }
Output Result
Enter a large integer: 987654321 Using nextBigInteger(): 987654321 Enter a large decimal: 9.55555 Using nextBigDecimal(): 9.55555
In the above example, we use the java.math.BigInteger and java.math.BigDecimal packages to read BigInteger and BigDecimal, respectively.
The scanner class reads the entire line and splits the line into tokens. Tokens are small elements that have meaning to the Java compiler. For example
Assuming there is an input string:
He is 22
In this case, the scanner object will read the entire line and split the string into tokens: “ He ”,“ is ” and “ 22 ”. Then, the object traverses each token and uses its different methods to read each token.
NoteBy default, spaces are used to delimit tokens.