Ao programar em Java ou qualquer outra linguagem, você provavelmente precisará usar as informações de entrada de um usuário. Java fornece muitos métodos diferentes para obter informações do usuário, mas o método mais comum e talvez o mais fácil de implementar é usar o objeto Scanner.
Passos
Método 1 de 2: vídeos
Etapa 1. Importe a classe Scanner
Você pode escolher importar o
java.util. Scanner
classe ou todo
java.util
pacote. Para importar uma classe ou pacote, adicione uma das seguintes linhas no início do seu código:
import java.util. Scanner; // Isso importará apenas a classe Scanner. import java.util. *; // Isso importará todo o pacote java.util.
Etapa 2. Inicialize um novo objeto Scanner passando o
System.in
fluxo de entrada para o construtor.
System.in
é o fluxo de entrada padrão que já está aberto e pronto para fornecer dados de entrada. Normalmente, esse fluxo corresponde à entrada do teclado.
Scanner userInputScanner = novo Scanner (System.in);
Etapa 3. Leia os diferentes tipos de dados de entrada inseridos pelo usuário
A classe Scanner suporta a obtenção de primitivos como int, byte, short, long, além de obter cadeias de caracteres.
-
Aqui estão alguns métodos que estão disponíveis por meio da classe Scanner:
-
Leia um byte -
nextByte ()
-
Leia um curto -
nextShort ()
-
Leia um int -
nextInt ()
-
Leia junto -
nextLong ()
-
Leia um carro alegórico -
nextFloat ()
-
Leia um duplo -
nextDouble ()
-
Leia um booleano -
nextBoolean ()
-
Leia uma linha completa -
nextLine ()
-
Leia uma palavra -
próximo()
-
-
Aqui está um exemplo de um programa que usa métodos diferentes da classe Scanner para obter diferentes tipos de entrada:
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Iniciar um novo Scanner Scanner userInputScanner = new Scanner (System.in); // Testando nextLine (); System.out.println ("\ nQual é o seu nome?"); Nome da string = userInputScanner.nextLine (); // Testando nextInt (); System.out.print ("Quantos gatos você tem?"); int numberOfCats = userInputScanner.nextInt (); // Testando nextDouble (); System.out.print ("Quanto dinheiro tem em sua carteira? $"); double moneyInWallet = userInputScanner.nextDouble (); System.out.println ("\ nOlá" + name + "! Você tem" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "e $" + moneyInWallet + "em sua carteira. / N"); }}
Método 2 de 2: Tratamento de exceções
Etapa 1. Lidar com exceções de entrada
Um
InputMismatchException
é lançado quando o usuário insere dados que não correspondem ao tipo solicitado. Por exemplo, se o usuário inserir uma String quando um int for solicitado, o programa lançará um
InputMismatchException
e saia. Existem várias maneiras de lidar com essa exceção e resolver esse problema para que seu programa seja à prova de falhas.
Etapa 2. Use um bloco try-catch para lidar com o
InputMismatchException
.
import java.util. InputMismatchException; import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Iniciar um novo Scanner Scanner userInputScanner = new Scanner (System.in); // Testando nextLine (); System.out.print ("\ nQual é o seu nome?"); Nome da string = userInputScanner.nextLine (); // Testando nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Quantos gatos você tem?"); tente {numberOfCats = userInputScanner.nextInt (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} // Testando nextDouble (); validInput = false; double moneyInWallet = 0,0; while (! validInput) {System.out.print ("Quanto dinheiro tem em sua carteira? $"); tente {moneyInWallet = userInputScanner.nextDouble (); userInputScanner.nextLine (); validInput = true; } catch (InputMismatchException e) {validInput = false; userInputScanner.nextLine (); }} System.out.println ("\ nOlá" + name + "! Você tem" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "e $" + moneyInWallet + "em sua carteira. / n "); }}
Observe que temos que importar
java.util. InputMismatchException
a fim de usar o
InputMismatchException
Adicionando
userInputScanner.nextLine ();
Etapa 3. Como alternativa, torne a entrada do usuário à prova de falhas, obtendo apenas as próximas linhas do scanner
Dessa forma, podemos garantir que tudo o que o Scanner retorna é um objeto String e não criará nenhuma exceção. Então, para converter as strings em inteiros ou duplos, podemos usar as classes Integer e Double wrapper.
import java.util. Scanner; public class ScannerExample {public static void main (String args) {// Iniciar um novo Scanner Scanner userInputScanner = new Scanner (System.in); // Testando nextLine (); System.out.print ("\ nQual é o seu nome?"); Nome da string = userInputScanner.nextLine (); // Testando nextInt (); boolean validInput = false; int numberOfCats = 0; while (! validInput) {System.out.print ("Quantos gatos você tem?"); String input = userInputScanner.nextLine (); tente {numberOfCats = Integer.parseInt (entrada); validInput = true; } catch (NumberFormatException e) {validInput = false; }} // Testando nextDouble (); validInput = false; double moneyInWallet = 0,0; while (! validInput) {System.out.print ("Quanto dinheiro tem em sua carteira? $"); String input = userInputScanner.nextLine (); tente {moneyInWallet = Double.parseDouble (entrada); validInput = true; } catch (NumberFormatException e) {validInput = false; }} System.out.println ("\ nOlá" + name + "! Você tem" + numberOfCats + (numberOfCats> 1? "Cats": "cat") + "e $" + moneyInWallet + "em sua carteira. / n "); }}
Observe que aqui não foi necessário importar o
NumberFormatException
Também não tivemos que limpar o buffer usando
userInputScanner.nextLine ();
Pontas
- Consulte a API do Scanner para obter mais informações sobre como usar a classe Scanner.
- Sempre use.next () em vez de.nextLine () para ler a próxima palavra, pois.nextLine () pode apresentar erros.