terça-feira, 16 de abril de 2013

Lendo dados do usuário em Java

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!

Nenhum comentário:

Postar um comentário