No desenvolvimento de aplicações em Java, a entrada de dados pelo console é uma das maneiras mais simples e comuns de interagir com o usuário. Para isso, utilizamos a classe Scanner
, que faz parte do pacote java.util
. Este artigo/tutorial explicará como utilizar o Scanner
para ler diferentes tipos de dados e apresentar exemplos práticos para facilitar a sua implementação.
O Que É a Classe Scanner?
A classe Scanner
é usada para obter a entrada de dados do usuário. Ela permite a leitura de diversos tipos de dados, como:
- Strings
- Inteiros
- Valores decimais (float, double)
- Caracteres
- Booleanos
Configurando o Scanner
Antes de começar a usar o Scanner
, é necessário importá-lo no início do código. O comando para importação é:
import java.util.Scanner;
Criando um Scanner e Lendo Dados do Usuário
Para utilizar o Scanner
, é preciso criar uma instância dele e associá-la ao System.in
, que é o fluxo de entrada padrão no console.
Exemplo Básico:
import java.util.Scanner;
public class EntradaDeDados {
public static void main(String[] args) {
// Criação do Scanner
Scanner scanner = new Scanner(System.in);
System.out.print("Digite seu nome: ");
String nome = scanner.nextLine(); // Lê uma linha inteira do console
System.out.print("Digite sua idade: ");
int idade = scanner.nextInt(); // Lê um número inteiro
System.out.println("Olá, " + nome + ". Você tem " + idade + " anos.");
// Fechando o Scanner
scanner.close();
}
}
Lendo Diferentes Tipos de Dados
O Scanner
possui métodos específicos para capturar diferentes tipos de entradas. Aqui estão alguns exemplos:
1. Lendo Números Inteiros
System.out.print("Digite um número inteiro: ");
int numero = scanner.nextInt(); // Método para números inteiros
2. Lendo Números Decimais
System.out.print("Digite um número decimal: ");
double decimal = scanner.nextDouble(); // Método para números decimais
Nota: O separador decimal padrão depende da localidade do sistema. Em alguns sistemas, pode ser necessário usar vírgula (,
), enquanto em outros é o ponto (.
).
3. Lendo Texto
System.out.print("Digite uma frase: ");
String texto = scanner.nextLine(); // Método para uma linha completa de texto
4. Lendo Um Único Caractere
Embora o Scanner
não tenha um método direto para caracteres, você pode usar nextLine()
e pegar o primeiro caractere:
System.out.print("Digite um caractere: ");
char caractere = scanner.nextLine().charAt(0); // Captura o primeiro caractere da entrada
5. Lendo Valores Booleanos
System.out.print("Digite true ou false: ");
boolean valor = scanner.nextBoolean(); // Método para valores booleanos
Tratando Erros de Entrada
É importante validar os dados inseridos pelo usuário para evitar erros. Por exemplo, se você espera um número e o usuário digitar texto, uma exceção será lançada. Use try-catch
para capturar essas situações:
try {
System.out.print("Digite um número inteiro: ");
int numero = scanner.nextInt();
System.out.println("Número digitado: " + numero);
} catch (Exception e) {
System.out.println("Entrada inválida. Por favor, insira um número inteiro.");
}
Exemplo Completo: Calculadora Simples
Este exemplo utiliza o Scanner
para criar uma calculadora básica:
import java.util.Scanner;
public class Calculadora {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Digite o primeiro número: ");
double numero1 = scanner.nextDouble();
System.out.print("Digite o segundo número: ");
double numero2 = scanner.nextDouble();
System.out.println("Escolha uma operação (+, -, *, /): ");
char operacao = scanner.next().charAt(0);
double resultado = 0;
boolean operacaoValida = true;
switch (operacao) {
case '+':
resultado = numero1 + numero2;
break;
case '-':
resultado = numero1 - numero2;
break;
case '*':
resultado = numero1 * numero2;
break;
case '/':
if (numero2 != 0) {
resultado = numero1 / numero2;
} else {
System.out.println("Erro: Divisão por zero!");
operacaoValida = false;
}
break;
default:
System.out.println("Operação inválida!");
operacaoValida = false;
}
if (operacaoValida) {
System.out.println("O resultado é: " + resultado);
}
scanner.close();
}
}
Fechando o Scanner
Sempre feche o Scanner
ao final do uso para liberar os recursos alocados. Isso é feito com o método close()
:
scanner.close();
Conclusão
O Scanner
é uma ferramenta poderosa e flexível para entrada de dados em Java. Ele é essencial para construir programas interativos que leem informações do console. Neste tutorial, aprendemos como utilizá-lo para capturar diversos tipos de dados e implementar validações para garantir entradas corretas. Experimente usá-lo em seus projetos e explore suas possibilidades!