Olá, galera!
A grande maioria dos programas de computadores são interativos, ou seja, necessitam da participação do usuário para informar valores de entrada necessários para os devidos processamentos. A linguagem Java oferece diferentes meios para que um programa possa ler entradas do usuário.
Lendo entradas do usuário via shell de linha de comando
Primeiramente, veremos como se dá a leitura de dados do usuário via terminal de linha de comando. Para tanto, utilizaremos a classe
Scanner do pacote
java.util. A classe Scanner oferece métodos para a leitura de número inteiros ou reais e também para a leitura de strings em forma de linhas. As três classes abaixo exibem o uso da classe Scanner para ler números e strings.
Classe LeitorValorInteiroTeclado
import java.util.Scanner;
public class LeitorValorInteiroTeclado {
public static void main(String[] args) {
Scanner leitor = new Scanner(System.in);
// Lê um valor inteiro do teclado
System.out.println("Digite a sua idade:");
int idade = leitor.nextInt();
System.out.println("Você tem " + idade + " anos de idade.");
}
}
Classe LeitorValorPontoFlutuanteTeclado
import java.util.Scanner;
public class LeitorValorPontoFlutuanteTeclado {
public static void main(String[] args) {
Scanner leitor = new Scanner(System.in);
// Lê um valor inteiro e um valor float do teclado
System.out.println("Digite a sua idade:");
int idade = leitor.nextInt();
System.out.println("Digite o seu peso em kg:");
float peso = leitor.nextFloat();
System.out.println("Você tem " + idade + " anos e pesa " + peso + " kg.");
}
}
Classe LeitorStringTeclado
import java.util.Scanner;
public class LeitorStringTeclado {
public static void main(String[] args) {
Scanner leitor = new Scanner(System.in);
/**
* O código abaixo lê uma string do teclado.
* Ao terminar de digitar a string, o usuário
* deve teclar ENTER.
*/
System.out.println("Qual a sua comida favorita?");
String resposta = leitor.nextLine();
System.out.println("A sua comida favorita é " + resposta + ".");
}
}
Os métodos
nextInt e
nextFloat da classe Scanner possuem um problema. Se o valor lido do usuário não pertencer ao domínio correto a ser lido, os métodos lançam uma exceção. Por exemplo, se o seu programa usa o método
nextInt para supostamente ler um valor inteiro digitado pelo usuário, porém o usuário digitar um número real ou mesmo uma string, o método lança a exceção
NumberFormatException, sinalizando que o formato do valor digitado é inválido ao dominío de leitura.
Criando janelas gráficas para ler entradas do usuário
Uma forma simples de criar uma janela gráfica para ler entradas do usuário é utilizar a classe
JOptionPane do pacote
javax.swing. As três classes abaixo mostram o uso da classe JOptionPane para ler entradas do usuário.
Classe LeitorInteiroDialog
import javax.swing.JOptionPane;
public class LeitorInteiroDialog {
public static void main(String[] args) {
/**
* Exibe uma janela para ler a resposta do usuário.
* Após, exibe outra janela para exibir a resposta
* digitada pelo usuário.
*/
String resposta=JOptionPane.showInputDialog("Qual a sua idade?");
// Converte a string em inteiro
int idade = Integer.parseInt(resposta);
JOptionPane.showMessageDialog(null, "Você tem " + idade +
" anos de idade.");
}
}
Classe LeitorFloatDialog
import javax.swing.JOptionPane;
public class LeitorFloatDialog {
public static void main(String[] args) {
String resposta=JOptionPane.showInputDialog("Qual a sua idade?");
int idade = Integer.parseInt(resposta);
// Converte a string em inteiro
resposta = JOptionPane.showInputDialog("Qual o seu peso em kg?");
float peso = Float.parseFloat(resposta);
// Converte a string em float
JOptionPane.showMessageDialog(null, "Você tem " + idade +
" anos de idade e pesa " +
peso + " kg.");
}
}
Classe LeitorStringDialog
import javax.swing.JOptionPane;
public class LeitorStringDialog {
public static void main(String[] args) {
/**
* Exibe uma janela para ler a resposta do usuário.
* Após, exibe outra janela para exibir a resposta
* digitada pelo usuário.
*/
String resposta = JOptionPane.showInputDialog("Qual a sua comida favorita?");
JOptionPane.showMessageDialog(null, "A sua comida favorita é " + resposta);
}
}
Em uma aula futura, veremos como ler dados do usuário de forma mais precisa e segura. Abraço!