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!
Nenhum comentário:
Postar um comentário