java scanner class tutorial with examples
Neste tutorial, discutiremos como importar e usar a classe Scanner de Java, juntamente com seus vários métodos, API de scanner e exemplos:
Já vimos os métodos de entrada-saída padrão usados por Java para ler / gravar dados nos dispositivos de E / S padrão.
Java fornece ainda outro mecanismo para ler a entrada do usuário. Esta é a classe Scanner. Embora não seja muito eficiente, a classe Scanner é a maneira mais fácil e preferida de ler entradas em programas Java.
=> Verifique TODOS os tutoriais Java aqui.
O que você aprenderá:
Classe Java Scanner: um olhar aprofundado
A classe Scanner é usada principalmente para varrer a entrada e ler a entrada de tipos de dados primitivos (integrados) como int, decimal, double, etc. A classe Scanner basicamente retorna a entrada tokenizada com base em algum padrão de delimitador. Portanto, em geral, se você quiser ler o tipo dt, poderá usar a função nextdt () para ler a entrada.
Uma classe Scanner implementa interfaces Iterator (string), Closeable e AutoCloseable.
Vamos explorar os detalhes desta classe Scanner agora.
Importar scanner
A classe Scanner pertence ao pacote “java.util”. Portanto, para usar a classe Scanner em seu programa, você precisa importar este pacote da seguinte maneira.
import java.util. *
OU
import java.util.Scanner;
Qualquer uma das instruções acima importará a classe Scanner e sua funcionalidade em seu programa.
Classe Java Scanner
Depois que a classe Scanner é importada para o programa Java, você pode usá-la para ler a entrada de vários tipos de dados. Dependendo se você deseja ler a entrada da entrada padrão ou arquivo ou canal, você pode passar o objeto predefinido apropriado para o objeto Scanner.
A seguir está um exemplo básico de uso da classe Scanner.
import java.util.*; public class Main { public static void main(String args()) { Scanner in = new Scanner (System.in); System.out.print ('Enter a String: '); String mystr = in.nextLine(); System.out.println('The String you entered is: ' + mystr); in.close(); } }
Resultado:
No programa acima, fornecemos o “System.in” (entrada padrão) como o objeto ao criar um objeto de classe Scanner. Em seguida, lemos uma entrada de string da entrada padrão.
API de scanner (construtores e métodos)
Nesta seção, exploraremos a API da classe Scanner em detalhes. A classe Scanner contém vários construtores sobrecarregados para acomodar vários métodos de entrada como System.in, entrada de arquivo, caminho, etc.
A tabela a seguir fornece o protótipo e a descrição de cada um dos construtores da classe Scanner.
é a chave de segurança igual à senha
Não | Protótipo | Descrição |
---|---|---|
7 | Scanner (origem do caminho, string charsetName) | Este construtor constrói um novo Scanner que verifica o arquivo especificado e produz os valores |
1 | Scanner (fonte InputStream) | Este construtor constrói um novo Scanner que verifica o novo InputStream, fonte e produz os valores |
dois | Scanner (fonte InputStream, String charsetName) | Este construtor constrói um novo Scanner que verifica o novo InputStream, fonte e produz os valores |
3 | Scanner (fonte do arquivo) | Este construtor constrói um novo Scanner que verifica o arquivo especificado e produz os valores |
4 | Scanner (fonte do arquivo, String charsetName) | Este construtor constrói um novo Scanner que verifica o arquivo especificado e produz os valores |
5 | Scanner (fonte String) | Este construtor constrói um novo Scanner que verifica a string especificada e produz os valores |
6 | Scanner (fonte do caminho) | Este construtor constrói um novo Scanner que verifica o arquivo especificado e produz os valores |
8 | Scanner (fonte legível) | Este construtor constrói um novo Scanner que verifica a fonte especificada e produz os valores |
9 | Scanner (fonte ReadableByteChannel) | Este construtor constrói um novo Scanner que verifica o canal especificado e produz os valores |
10 | Scanner (fonte ReadableByteChannel, String charsetName) | Este construtor constrói um novo Scanner que verifica o canal especificado e produz os valores |
Assim como os construtores, a classe Scanner também fornece vários métodos que são usados para verificar e ler a entrada. Ele fornece vários métodos booleanos que permitem verificar se o próximo token na entrada é um token de um determinado tipo de dados.
Observe que, para cada construtor, você pode fornecer apenas um argumento com o objeto de entrada predefinido ou dois argumentos consistindo em objeto de entrada predefinido e conjunto de caracteres. No caso de um argumento, o conjunto de caracteres padrão é assumido.
Também existem métodos para recuperar tokens de cada tipo de dados.
Outros métodos incluem aqueles para definir localidade, raiz, padrões de correspondência, fechar Scanner, etc.
A tabela a seguir fornece o protótipo e a descrição de cada um dos métodos básicos do Scanner.
Não | Protótipo | Descrição |
---|---|---|
7 | Boolean hasNextFloat () | Verifica se o próximo token na entrada do Scanner é do tipo flutuante |
1 | Boolean hasNext () | Retorna verdadeiro se houver outro token na entrada do Scanner |
dois | Boolean hasNextBigDecimal () | Verifica se o próximo token na entrada do Scanner é do tipo bigDecimal. |
3 | Boolean hasNextBigInteger () | Verifica se o próximo token na entrada do Scanner é do tipo bigInteger |
4 | Boolean hasNextBoolean () | Verifica se o próximo token na entrada do Scanner é do tipo booleano |
5 | Boolean hasNextByte () | Verifica se o próximo token na entrada do Scanner é do tipo Byte |
6 | Boolean hasNextDouble () | Verifica se o próximo token na entrada do Scanner é do tipo duplo |
8 | Boolean hasNextInt () | Verifica se o próximo token na entrada do Scanner é do tipo inteiro |
9 | Boolean hasNextLine () | Verifica se o próximo token na entrada do Scanner é outra linha |
10 | Boolean hasNextLong () | Verifica se o próximo token na entrada do Scanner é do tipo longo |
onze | Boolean hasNextShort () | Verifica se o próximo token na entrada do Scanner é do tipo curto |
12 | String next () | Verifica a entrada para o próximo token completo |
13 | BigDecimal nextBigDecimal () | Verifica a entrada para o próximo token BigDecimal |
14 | BigInteger nextBigInteger () | Verifica a entrada para o próximo token BigInteger |
quinze | Boolean nextBoolean () | Verifica a entrada para o próximo token booleano |
16 | Byte nextByte () | Verifica a entrada para o próximo token de byte |
17 | Double nextDouble () | Verifica a entrada para o próximo token duplo |
18 | Float nextFloat () | Verifica a entrada para o próximo token flutuante |
19 | Int nextInt () | Verifica a entrada para o próximo token inteiro |
vinte | String nextLine () | Obtenha a string de entrada ignorada do objeto Scanner |
vinte e um | Long nextLong () | Verifica a entrada para o próximo token de inteiro longo |
22 | NextShort curto () | Verifica a entrada para o próximo token de inteiro curto |
2,3 | Reinicialização do scanner () | Reinicialize o scanner atualmente em uso |
24 | Ignorar scanner () | Ignora delimitadores e pula a entrada que corresponde ao padrão fornecido |
25 | Scanner useDelimiter () | Defina o padrão de delimitação para o padrão especificado |
26 | Scanner useLocale () | Defina o objeto de local dos Scanners com o local fornecido |
27 | Scanner useRadix () | Defina a raiz especificada como a raiz padrão para Scanner |
28 | Radix Int () | Retorna a raiz padrão do Scanner atual |
29 | void remove () | Pode ser usado quando o Iterator não suporta a operação de remoção |
30 | Tokens de fluxo () | Retorna um fluxo de tokens separados por delimitador do Scanner atual |
31 | String toString () | A representação da string de retorno de determinado Scanner atualmente em uso |
32 | IOException ioException () | Retorna a última IOException lançada por legível do objeto Scanner |
33 | Stream findALL () | Retorna o fluxo de resultados de correspondência que correspondem ao padrão fornecido |
3. 4 | String findInLine () | Encontre a próxima ocorrência do padrão da string fornecida; ignora delimitadores |
35 | String findWithinHorizon () | Encontre a próxima ocorrência do padrão da string fornecida; ignora delimitadores |
36 | Delimitador de padrão () | Retorna o padrão usado pelo Scanner atual |
37 | Fechar anulado () | Fecha o Scanner |
38 | MatchResult match () | Retorna o resultado correspondente da última operação de varredura |
39 | Local local () | Retorne a localidade do Scanner atual |
Verificar aqui para saber mais sobre os Métodos de Scanner.
Como usar o scanner em Java?
Agora que você viu os vários construtores e métodos fornecidos pela classe Scanner, vamos implementar alguns dos exemplos para demonstrar como usar a classe Scanner em Java.
A implementação a seguir mostra o uso da classe Scanner para ler a entrada de System.in, ou seja, a entrada padrão.
Aqui, usamos um objeto System.in predefinido para criar um objeto Scanner. O usuário é então solicitado a inserir o nome, a classe e a porcentagem. Todos esses detalhes são lidos usando o objeto da classe Scanner.
Observe os métodos usados pelos objetos Scanner para ler diferentes tipos de entrada. Como o nome é uma string, o objeto Scanner usa o método next (). Para entrada de classe, ele usa nextInt () enquanto para porcentagem ele usa nextFloat ().
Dessa maneira, você pode separar facilmente a entrada durante a leitura.
A saída do programa mostra a entrada que está sendo inserida e as informações exibidas.
import java.util.*; public class Main{ public static void main(String ()args){ String name; int myclass; float percentage; //creating object of Scanner class Scanner input = new Scanner(System.in); System.out.print('Enter your name: '); name = input.next(); System.out.print('Enter your class: '); myclass = input.nextInt(); System.out.print('Enter your percentage: '); percentage = input.nextFloat(); input.close(); System.out.println('Name: ' + name + ', Class: '+ myclass + ', Percentage: '+ percentage); } }
Resultado:
String do Scanner
Como já mencionado, você pode usar vários objetos predefinidos ao criar um objeto Scanner. Isso significa que você pode ler a entrada da entrada padrão, arquivos e vários canais de E / S ou também de strings.
Quando uma entrada de string é usada, você também pode usar expressões regulares dentro dela.
Os exemplos a seguir mostram o programa em que Scanner usa uma string como entrada. Essa entrada é então verificada e os tokens separados pela leitura de cada token.
Os tokens lidos são exibidos na saída.
import java.util.*; public class Main{ public static void main(String ()args){ System.out.println ('The subjects are as follows :'); String input = '1 Maths 2 English 3 Science 4 Hindi'; Scanner s = new Scanner(input); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); System.out.print(s.nextInt()+'. '); System.out.println(s.next()); s.close(); } }
Resultado:
Fechar scanner
A classe Java Scanner usa o método “Close ()” para fechar o Scanner. A classe Scanner também implementa internamente uma interface Closeable e, portanto, se o Scanner ainda não estiver fechado, a interface Readable subjacente invoca seu método close.
É uma boa prática de programação fechar explicitamente o Scanner usando o método Close () assim que terminar de usá-lo.
Observação: Se o objeto Scanner for fechado e for feita uma tentativa de pesquisa, isso resultará em “IllegalStateException”.
perguntas frequentes
Q # 1) O que é a classe Scanner em Java?
Responda: A classe Scanner é parte do pacote “java.util” do Java e é usada para ler a entrada de diferentes tipos de dados primitivos como int, float, strings, etc.
qual ide é melhor para python
Q # 2) Qual é a diferença entre os métodos next () e nextLine () da classe Scanner?
Responda: O método next () lê a entrada até o espaço e coloca o cursor na mesma linha após ler a entrada. O método nextLine (), entretanto, lê toda a linha de entrada até o final da linha, incluindo os espaços.
P # 3) O que é hasNext () em Java?
Responda: O método hasNext () é um dos métodos do Java Scanner. Este método retorna verdadeiro se o Scanner tiver outro token na entrada.
P # 4) Você precisa fechar uma classe Scanner?
Responda: É melhor, mas não obrigatório, fechar a classe Scanner como se ela não estivesse fechada, a interface legível subjacente da classe Scanner faz o trabalho para você. O compilador pode piscar algum aviso, se não estiver fechado.
Portanto, como uma boa prática de programação, sempre feche o scanner.
P # 5) Qual é o propósito de “system.in” na classe Scanner?
Responda: Ao usar “System.in” na classe Scanner, você permite que o Scanner leia o teclado conectado aos dados de entrada padrão.
Conclusão
Neste tutorial, vimos a classe Scanner e todos os seus detalhes, incluindo a API e a implementação. A classe Scanner é usada para ler dados de entrada de uma variedade de meios, como entrada padrão, arquivos, canais IO, strings com / sem expressões regulares, etc.
Embora o Scanner não seja uma maneira muito eficiente de ler entradas, é uma das maneiras mais fáceis. O Scanner permite que você leia a entrada de vários tipos de dados primitivos como int, float, strings, etc. Quando você usa strings como um objeto de entrada para a classe Scanner, você também pode usar expressões regulares com ele.
A classe Scanner também permite que você leia a entrada combinando algum padrão ou delimitador.
Para concluir, o uso da classe Scanner em Java continua sendo a maneira mais fácil e preferida de ler entradas.
=> Confira o guia de treinamento Java perfeito aqui.
Leitura recomendada
- O que é Java Vector | Tutorial da classe Java Vector com exemplos
- Tutorial da classe Java Array - classe java.util.Arrays com exemplos
- Tutorial JAVA para iniciantes: mais de 100 tutoriais práticos em vídeo Java
- Interface Java e tutorial de classe abstrata com exemplos
- Tutorial de reflexão Java com exemplos
- Jagged Array In Java - Tutorial com exemplos
- Tutorial de comprimento de array Java com exemplos de código
- Tutorial de Java String | Métodos Java String com exemplos