Como usar o scanner em java

Como usar o scanner em java
O scanner em Java é uma aula em Java.pacote Util. Esta classe tem como objetivo ler a entrada de uma string, o teclado, arquivo ou soquete de rede. Este artigo se concentra apenas na leitura de informações do teclado e na exibição do resultado na janela do terminal. Idéias semelhantes podem ser usadas para ler a entrada do arquivo ou canal de rede. O scanner não imprime na janela do terminal. Para imprimir no terminal, use o sistema.objeto out. É simples usar este objeto para imprimir no terminal, como ilustrado abaixo.

Para usar a classe do scanner, ela deve ser importada primeiro. Depois disso, um objeto deve ser instanciado dele. Depois de usar o objeto do scanner, ele deve ser fechado. O objeto de fluxo de entrada que representa o teclado é o sistema.em. O scanner tem muitos métodos. Somente os comumente usados ​​serão explicados neste artigo.

Conteúdo do artigo

  • Uso simples da classe do scanner
  • Cuspir linha de entrada em valores
  • Lendo e validando tipos de dados primitivos
  • Atribuir token de entrada a uma variável
  • Conclusão

Uso simples da classe do scanner

O código a seguir pede ao usuário que digite uma frase e, em seguida, exibe a frase:

importar java.util.Scanner;
classe pública theClass
public static void main (string [] args)
Scanner scanobj = novo scanner (sistema.em);
Sistema.fora.println ("Digite uma frase e pressione Enter:");
String sentença = scanobj.nextline ();
Sistema.fora.println (frase);
Scanobj.fechar();

A primeira linha importa a classe do scanner. Na função principal, a primeira linha cria um objeto de scanner usando o “sistema.em "objeto para o teclado. Assim que o objeto do scanner for criado, ele começa a esperar pela entrada. A próxima linha imprime uma declaração, pedindo ao usuário que digite uma frase. A linha seguinte no código usa o método nextline () do objeto Scanner para ler a frase do usuário depois que ele pressiona Enter. A linha depois, no código, reimpressa a frase na janela do terminal. A última linha fecha o objeto do scanner.

Cuspir linha de entrada em valores

O código a seguir divide a linha de entrada em palavras (tokens), usando o espaço como delimitador:

importar java.util.Scanner;
classe pública theClass
public static void main (string [] args)
Scanner scanobj = novo scanner (sistema.em);
Sistema.fora.println ("Tipo A linha de tokens e pressione Enter:");
while (scanobj.hasNext ())
Sistema.fora.println (scanobj.próximo());

Scanobj.fechar();

hasNext () e Next () são outros dois métodos do objeto Scanner. Quando o objeto do scanner lê uma linha, ele o mantém. Em seguida () acessar o próximo token (palavra). hasnext () retorna true se houver algum outro token ainda não acessado.

Infelizmente, o usuário ainda deve digitar a entrada para dividir e se dividir com este código. Para acabar com tudo isso, pressione Ctrl+Z e você deve estar de volta ao prompt de comando.

No código acima, o delimitador separa os tokens no espaço. Outro personagem pode ser usado. O código a seguir usa a vírgula. Não se esqueça de pressionar Ctrl+Z para encerrar o loop se você testar o código.

importar java.util.Scanner;
classe pública theClass
public static void main (string [] args)
Scanner scanobj = novo scanner (sistema.em);
Sistema.fora.println ("Tipo A linha de tokens e pressione Enter:");
Scanobj.usadoLimiter (",");
while (scanobj.hasNext ())
Sistema.fora.println (scanobj.próximo());

Scanobj.fechar();

Se você testou o código, teria notado que os espaços em tokens foram incluídos como parte dos tokens (saída). A expressão, scanobj.usadoLimiter (","); digitado após a linha de entrada ter sido lida; é o que faz da vírgula, o delimitador.

Lendo e validando tipos de dados primitivos

Método NextBoolean ()

No código a seguir, espera -se que o usuário digite "verdadeiro" ou "falso" sem as cotações e pressione a tecla Enter se o usuário digitar mais alguma coisa, como "sim" ou "não", uma mensagem de erro será exibido.

importar java.util.Scanner;
classe pública theClass
public static void main (string [] args)
Sistema.fora.print ("Você está acima de 24? ");
Scanner scanobj = novo scanner (sistema.em);
Boolean Bl = Scanobj.NextBoolean ();
if (bl == true)
Sistema.fora.println ("Você tem mais de 24 anos");

caso contrário, se (bl == false)
Sistema.fora.println ("Você tem menos de 24 anos");

Scanobj.fechar();

Como o Java emitirá uma mensagem de erro enquanto a entrada não for verdadeira ou falsa exatamente, o "else se" foi usado em vez de "else".

A diferença entre os métodos, Print e Println, é que a impressão espera a entrada na linha atual, enquanto o println espera a entrada na próxima linha.

Método NextByte ()

Com o conjunto de caracteres ASCII, um personagem é um byte. No entanto, com alguns conjuntos de caracteres orientais, um personagem pode consistir em mais de um byte. Independente do conjunto de personagens, o método NextByte lê e valida o próximo byte da entrada. O código a seguir pode ser usado para esse fim:

importar java.util.Scanner;
classe pública theClass
public static void main (string [] args)
Sistema.fora.impressão ("Número do tipo < 128, press Enter: ");
Scanner scanobj = novo scanner (sistema.em);
byte bt = scanobj.nextByte ();
Sistema.fora.println (bt);
Scanobj.fechar();

Se um número maior que 127 ou um caractere alfabeto for inserido para este código, uma mensagem de erro seria emitida.

método nextInt ()

O próximo token inteiro como uma entrada também pode ser validado e aceito. O código a seguir pode ser usado:

importar java.util.Scanner;
classe pública theClass
public static void main (string [] args)
Sistema.fora.print ("Digite qualquer número inteiro:");
Scanner scanobj = novo scanner (sistema.em);
int num = scanobj.nextInt ();
Sistema.fora.println (num);
Scanobj.fechar();

Espaços de liderança ou trilha foram removidos. Para este código, qualquer valor inteiro, incluindo valores maiores que 127, seria aceito. Com esses métodos seguintesxxx (), depois que a validação falha, uma mensagem de erro é emitida.

Método NextBigInteGer ()

Parece que os engenheiros de software nunca vão parar de criar coisas novas. Um grande número inteiro é um número inteiro cujo valor é muito maior que o de um número inteiro. No entanto, com Java, pode ser lido da mesma maneira que o inteiro. O código a seguir ilustra o seguinte:

importar java.util.Scanner;
importar java.matemática.Biginteger;
classe pública theClass
public static void main (string [] args)
Sistema.fora.println ("Digite qualquer número inteiro para grande número inteiro:");
Scanner scanobj = novo scanner (sistema.em);
Biginteger num = scanobj.nextBigInteger ();
Sistema.fora.println (num);
Scanobj.fechar();

Observe a declaração de importação: “Importar java.matemática.Biginteger; ”. Além disso, observe que o tipo inteiro grande é iniciado com uma mancha B e não uma minúscula B.

método nextfloat ()

O próximo token de flutuação como uma entrada também pode ser validado e aceito. O código a seguir pode ser usado:

importar java.util.Scanner;
classe pública theClass
public static void main (string [] args)
Sistema.fora.print ("Digite qualquer flutuador:");
Scanner scanobj = novo scanner (sistema.em);
flutuar num = scanobj.nextfloat ();
Sistema.fora.println (num);
Scanobj.fechar();

Um exemplo de número de flutuação é 23.456. Espaços de liderança ou trilha foram removidos.

NextDouble ()

O próximo token duplo como entrada também pode ser validado e aceito. O código a seguir pode ser usado:

importar java.util.Scanner;
classe pública theClass
public static void main (string [] args)
Sistema.fora.print ("Digite qualquer duplo:");
Scanner scanobj = novo scanner (sistema.em);
duplo num = scanobj.NextDouble ();
Sistema.fora.println (num);
Scanobj.fechar();

Um exemplo de número duplo é 23.456. Um número duplo é diferente de um flutuador porque tem menos margem de erro. Espaços de liderança ou trilha foram removidos.

Método NextLine ()

O método NextLine () é para uma string. Se a string for a linha de entrada do teclado depois de pressionar Enter, ela pode ter o personagem Newline, '\ n'. O código a seguir pode ser usado:

importar java.util.Scanner;
classe pública theClass
public static void main (string [] args)
Sistema.fora.println ("Digite uma linha com \\ n:");
Scanner scanobj = novo scanner (sistema.em);
String str = scanobj.nextline ();
Sistema.fora.println (str);
Scanobj.fechar();

Observe que o tipo de string está iniciado com a mancha s e não com a minúscula s.

Os métodos NextLine (), HasNext () e Next () foram usados ​​anteriormente, neste artigo. O scanner tem outros métodos e outros métodos de dados primitivos - veja mais adiante.

Atribuindo entrada a uma variável

A entrada pode ser atribuída a uma variável, como mostra o código a seguir:

importar java.util.Scanner;
classe pública theClass
public static void main (string [] args)
Scanner scanobj = novo scanner (sistema.em);
Sistema.fora.print ("Digite o nome:");
Nome da string = scanobj.nextline ();
Sistema.fora.print ("Digite a idade:");
Int Age = ScanobJ.nextInt ();
Sistema.fora.print ("Digite o salário:");
salário duplo = scanobj.NextDouble ();
Sistema.fora.println ("nome:" + nome + ", idade:" + idade + ", salário:" + salário);
Scanobj.fechar();

Conclusão

O scanner em Java é uma aula em Java.pacote Util. Esta classe tem como objetivo ler a entrada de uma string, o teclado, arquivo ou soquete de rede. Este artigo concentrou -se principalmente na leitura da entrada do teclado e na exibição do resultado na janela do terminal. Idéias semelhantes podem ser usadas para ler a entrada da string, arquivo ou canal de rede.

Para ler toda a linha de entrada do teclado, use o método NextLine (). A linha como string pode ser dividida em tokens, usando os métodos HasNext () e Next (), e o loop while. O delimitador padrão para dividir é o espaço, mas o programador pode escolher outro delimitador. Não se esqueça de fazer Ctrl+Z para parar o loop while, se necessário. A remoção de espaços de liderança e à direita pode ser feita usando outros esquemas não abordados neste artigo. A validação dos tokens também pode ser feita usando outros esquemas não abordados neste artigo.

Os valores primitivos podem ser lidos usando o NextBoolean (), NextByte (), NextInt (), etc. Esses métodos Nextxxx () fazem validação e também removem espaços de liderança e trilha.

O scanner Java tem muito mais métodos. No entanto, o uso básico do scanner foi explicado neste artigo. A seleção de um token é realmente feita usando técnicas de expressão regular. O uso de técnicas de expressão regular é a discussão, para algum outro momento.