Material de apoio 5

Propaganda
ENTRADA E SAÍDA DE DADOS PELO TECLADO
Entrada e saída de dados no modo texto equivalem a dados digitados e
impressos via prompt de comando.
A classe System, que pertence ao pacote java.lang, nos permite a entrada e saída
de dados padrão. Seus atributos e métodos são usados para realizar diversas
operações do sistema.
A classe System possui três atributos utilizados para a realização de entrada e saída
de dados padrão pelo console.
in – atributo da classe System, do tipo InputStream, que permite a entrada de dados
via teclado.
err – atributo da classe System, do tipo InputStream, que permite a saída de erros
via console.
out – atributo da classe System, do tipo Input Stream, que permite a saída de dados
via console.
Esses métodos são estáticos e, portanto, não precisam de uma instância para serem
acessados.
System.in
System.err
System.out
System.out
O atributo out direciona toda a saída de dados para a saída padrão, ou seja. o prompt
de comandos. Para isso existem dois métodos que fazem este direcionamento.
print()
println()
A diferença entre os dois métodos é que o método print(), após imprimir os dados
permanece na posição seguinte a da última palavra impressa, enquanto
o método println(), após a impressão, pula para a primeira posição da linha
seguinte a da que foi impressa.
Para que o método print() possua uma quebra de linha, basta acrescentar ao final do
dado a ser impresso o caractere de escape “\n”.
Ex.:
System.out.print(“Pula linha\n”);
Colocando o “\n” no final da impressão o cursor passará para a próxima linha.
Não é necessário utilizar o camando System.out para que os método de saída
funcionem. Pode-se criar uma variável de instância/referência do tipo InputStream
que exerça essa função.
Ex.:
InputStream imprime = System.out;
Assim, é só substituir System.out por imprime:
imprime.println(“Com o objeto imprime”);
imprime.println();
System.in
O método System.in permite a entrada de dados, via prompt de comando. Ele
pertence a classe InputStream e direciona para a entrada padrão do sistema, ou seja,
o prompt de comando. O método read() da classe InputStream faz a leitura dos dados
digitados. Para receber os dados, é utilizada uma variável de instância do tipo vetor de
bytes. O método read() chama a variável do tipo vetor e grava os dados nele. Depois é
só transferir o dado para o tipo primitivo.
try
{
byte bt[ ] = new byte[50];
System.in.read(byte);
String st = new String(bt).trim(); }
catch(IOException erro) {
//Tratamento do erro }
Como o método read() gera erro no caso de entrada de dados inválidos, é necessário o
tratamento destes erros através do bloco try catch(). A primeira linha declara e
instancia o vetor do tipo byte. A segunda linha faz a leitura do dado e a gravação no
vetor. A terceira linha transfere o dado digitado para o tipo primitivo.
Exemplo: import java.io.*;
class EntradaRead {
public static void main(String args[ ])
{ String nome = “ “; int ra = 0; try {
byte bt[ ] = new byte[50]; System.out.println(“Informe seu nome: “);
System.in.read(bt); nome = new String(bt).trim();
bt = new byte[9]; System.out.println(“Informe seu
RA”); System.in.read(bt);
String st = new String(bt).trim();
ra = Integer.parseInt(st); } catch(IOException erro) {
System.err.println(“Erro de entrada/saída”);
System.exit(0); } catch(NumberFormatException erro) {
System.err.println(“Matricula inválida!”);
System.exit(0); } System.out.prrintln(“Nome : “ + nome);
System.out.println(“RA : “ + Ra);
} } O método System.exit(0) é utilizado para forçar o encerramento do programa
e deve ser utilizado principalmente quando utilizamos interfaces gráficas, mesmo que
seja uma simples caixa de diálogo. Quando se fecha uma caixa de diálogo, na
verdade, não encerramos o programa que continua rodando. O System.exit(0) indica o
encerramento normal do programa. Existe também o método System.gc, que ativaria o
Garbaje Colector, mas a JVM já faz isso automaticamente.
Scanner
A classe scanner permite ler dados digitados via teclado, números, por exemplo, para
serem usados no processamento. Da mesma forma que o pacote java.io, é necessário
que seja instanciado um objeto para sua utilização.
A classe Scanner pertence ao pacote java.util e utiliza os métodos next(), nextLine(),
nextInt(), nextFloat(), nextDouble(). next() – retorna a primeira palavra digitada na linha
de comando. nextLine() – retorna toda a frase digitada na linha de comando.
nextInt() – retorna o numero inteiro digitado na linha de comando. nextFloat – retorna
o numero real de precisão simples digitado na linha de comando.
nextDouble() – retorna o numero real de precisão dupla digitado na linha de comando.
Exemplos:
import java.util.Scanner; public
class ExemploNext {
public static void main(String args[ ])
{ String palavra = “ “; Scanner entra = new Scanner(System.in); for(int i=0; i<= 2; i++) {
System.out.print(“Entre com a palavra “ + i + “:”);
palavra = palavra+“\nResultado “ + i + “: “ +entra.next(); }
System.out.pintln(prases + “\n”);
} } import
java.util.Scanner;
public class
ExNextLine {
public static void main(String args[ ])
{ String frase = " "; Scanner entra = new Scanner(System.in);
for(int i = 0; i <= 2; i++)
{ System.out.print("Entre com a palavra " + i + ": "); frase = frase + "\nSaida " + i + ":
" + entra.nextLine();
} System.out.println(frase + "\n"); } }
import java.util.Scanner; public class
ExScannerNumeros {
public static void main(String args[ ])
{ Scanner entrada = new Scanner(System.in); int numero1, float numero2, double numero3;
System.out.println(“Entre com um numero inteiro”); numero1 = entrada.nextInt();
System.out.println(“Entre com um numero real simples”); numero2 =
entrada.nextFloat();
System.out.println(“Entre com um numero real duplo”);
numero3 = entrada.nextDouble();
System.out.println(“Numero inteiro : “ + numero1);
System.out.println(“Numero float: “ + numero2);
System.out.println(“Numero Double: “ + numero3);
}
}
Entrada e saída de dados por JOptionPane
Além da linha de comando do prompt, outra forma de entrada e saída de dados pelo
sistema é através de caixas de diálogo.
A classe JOptionPane que pertence ao pacote javax.swing, permite que utilizemos
este recurso que é bem mais agradável ao usuário, por apresentar caixas de entrada
de dados e saída de mensagens mais fáceis de utilizar e bem mais bonitas também,
ao invés da tela preta do prompt de comandos.
Existem vários métodos nesta classe que fazem a interação com usuário, para
entrada de dados, mensagens, solicitação de uma confirmação e escolha de uma
opção. São elas:
showInputDialog() – Solicita que o usuário entre com algum valor.
As caixas de diálogo de entrada são geradas a partir do método showInputDialog() e
são utilizadas para fazer uma pergunta ao usuário e solicitar a entrada de um texto.
Esse texto será armazenado em uma variável qualquer do tipo String. A sintaxe usada
na criação de caixas de diálogo de entrada é praticamente a mesma usada nas caixas
de mensagem.
Sintaxe: JoptionPane.showInputDialog(Component, <mensagem>, <título da
mensagem>, <botões presentes>, <tipo de mensagem>).
showMessageDialog() – Mostra uma mensagem ao usuário.
A caixa de diálogo showMessageDialog() é utilizada para mostrar ao usuário alguma
informação e não retorna nenhum tipo de valor de resposta. Essas caixas de diálogo
podem apresentar um ícone referente ao tipo de mensagem (pergunta, informação,
alerta, ou erro) ou não apresentar nada, apenas a mensagem na tela sem ícone.
Sintaxe:
JoptionPane.showMessageDialog(Component, <mensagem>, <título da mensagem>,
<tipo de mensagem>) Onde:
•
Component: Refere-se a um objeto do tipo contêiner que permite definir a
posição da tela em que a caixa de mensagem aparecerá. Normalmente esse
argumento é deixado como "null" (default) para que a mensagem apareça centralizada
na tela.
•
Mensagem: É a mensagem do tipo String que a caixa de diálogo informa ao
usuário.
•
Título da mensagem: É o texto que aparece na barra de título da janela da
caixa de diálogo.
•
Tipo da mensagem: É o ícone que representa o tipo de mensagem que está
sendo informado ao usuário. Esse ícone é definido pelo usuário. A tabela abaixo
apresenta as "constantes" da linguagem Java para definição dos ícones a serem
apresentados na tela.
showConfirmDialog() – Solicita ao usuário uma confirmação.
As caixas de diálogo de confirmação são pequenas janelas que possibilitam ao usuário
responder algum questionamento por meio dos botões "YES, NO e CANCEL". Uma
vez apresentada na tela, o usuário escolhe uma das opções e, dependendo do botão
clicado, é gerado um valor inteiro pertencente à classe JOptionPane:
•
YES_OPTION = 0;
•
NO_OPTION = 1;
•
CANCEL_OPTION = 2.
Estes valores são utilizados para conhecer qual dos botões foi clicado pelo usuário.
Existem três tipos de caixa de diálogo de confirmação:
•
Apresentam os botões YES e NO D YES_NO_OPTION ou 0;
•
Apresentam os botões YES, NO e CANCEL D YES_NO_CANCEL ou 1;
•
Apresentam os botões OK e CANCEL D OK_CANCEL_OPTION ou 2.
Sintaxe: JoptionPane.showConfirmDialog(Component, <mensagem>, <título da
mensagem>, <botões presentes>, <tipo de mensagem>).
A única diferença entre essa sintaxe e a sintaxe da caixa de mensagem
(showMessageDialog()) se refere ao parâmetro <botões presentes> no qual são
inseridos os botões que aparecerão na caixa de diálogo.
showOptionDialog() – Solicita ao usuário que escolha uma das opções.
As caixas de diálogo de opção são geradas a partir do método showOptionDialog() e
são bem complexas. São capazes de combinar todos os recursos já vistos nas outras
caixas de diálogo. Sintaxe: JOptionPane.showOptionDialog(Component, <mensagem>,
<título da menagem>, <botões presentes>, <tipo de mensagem>, <ícone>, <array de
objetos>, <seleção padrão>). Onde:
•
Botões presentes: Um tipo de caixa que utiliza as variáveis YES_NO_OPTION,
YES_NO_CANCEL_OPTION ou OK_CANCEL_OPTION. Deve-se utilizar o 0(zero)
caso outros botões sejam utilizados no lugar destes.
•
erro;
Tipo de mensagem: Uma das variáveis de pergunta, informação, alerta, ou
•
Ícone: Um objeto ImageIcon a ser apresentado no lugar de um dos ícones do
argumento anterior (<tipo de mensagem>). Se nenhum ícone for usado, deve-se
colocar a palavra "null" no lugar desse argumento.
•
Array de objetos: É um array de objetos que contém os componentes ou
outros objetos que representam as escolhas da caixa de diálogo, caso
YES_NO_OPTION, YES_NO_CANCEL_OPTION ou OK_CANCEL_OPTION não
esteja sendo utilizado.
Além das mensagens elas permitem que se altere o nome da caixa, que é exibido
no alto da caixa de diálogo, além do tipo de mensagem que se quer mostrar.
Exemplo:
import javax.swing.*;
public class ExJOptionPane
{
public static void main(String args[])
{
int resposta = JOptionPane.NO_OPTION;
while(resposta == JOptionPane.NO_OPTION)
{
String sexo =JOptionPane.showInputDialog(null,"Digite seu
sexo(M/F)","Sexo",JOptionPane.PLAIN_MESSAGE);
if(sexo.equals("M"))
{
JOptionPane.showMessageDialog(null,"Você é do sexo
masculino","Masculino",JOptionPane.INFORMATION_MESSAGE); } else if(sexo.equals("F")) {
JOptionPane.showMessageDialog(null,"Você é do sexo
feminino","Feminino",JOptionPane.INFORMATION_MESSAGE); } else {
JOptionPane.showMessageDialog(null,"Sexo inválido","Inválido",JOptionPane.ERROR_MESSAGE);
}
resposta = JOptionPane.showConfirmDialog(null,"Deseja
encerrar","Encerramento",JOptionPane.YES_NO_OPTION,JOptionPane.QUESTION_MESSA GE);
} JOptionPane.showMessageDialog(null,"O programa será
encerrado","Fim",JOptionPane.WARNING_MESSAGE); System.exit(0);
} } import javax.swing.JOptionPane; public class TesteJOptionPane2
{ public static void main(String[] args) {
String[] escolha = {"entre 1 e 20 anos", "entre 21 e 40 anos", "mais de 40 anos"}; int resp =
JOptionPane.showOptionDialog(null, "Qual sua idade?", "Idade", 0,
JOptionPane.QUESTION_MESSAGE, null, escolha, escolha[0]);
String idade = escolha[resp];
JOptionPane.showMessageDialog(null,idade,”Foi informado: “ + idade,
"Informação", JOptionPane.INFORMATION_MESSAGE);
System.exit(0)
;}}
EXERCÍCIOS
Qual a diferença entre os métodos print() e println()?
O que deve ser feito para o método print() simular o método println()?
Faça um programa em Java que imprima na tela a figura abaixo. Só pode ser
impresso um caractere de cada vez, ou seja, um asterisco(*) ou um espaço em branco
de cada vez.
******** * *
***
******* * *
* ************
** *
** *
4 Escreva um programa em Java que simule uma calculadora simples. Este programa
deve solicitar via console do teclado, qual a operação que o usuário quer realizar
(soma, subtração, multiplicação ou divisão) e em seguida peça para o usuário informar
o primeiro e o segundo valor para realizar a operação matemática. A calculadora deve
realizar operações apenas entre dois números. Após o calculo, deve-se imprimir na
tela o resultado.
5 Utilize o mesmo programa feito no exercício quatro, porém ao invés de solicitar ao
usuário as informações via console do teclado, utilize os métodos da classe
javax.swing.JOptionPane para solicitar as informações por meio de caixas de diálogo.
O seu programa deve conter obrigatoriamente os seguintes métodos:
•
showInputDialog();
•
showMessageDialog();
•
showConfirmDialog().
Download