Buscar

Entrada e Saída de dados em Java

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Universidade Paulista (UNIP)
Paradigma de Linguagem
Vladimir Camelo, MSc.
São Paulo, 2018
Entrada e Saída pelo teclado na console
	Operações de entrada e saída em modo texto referem-se a captação e exibição de dado via prompt de comando, ou seja, pela console.
	Por intermédio da classe System podemos obter referência à entrada e saída padrão. Esta classe está localizada no pacote java.lang e deriva diretamente da classe Object. Os atributos e métodos da classe System são utilizados para realizar diversas operações de sistema.
	A classe System possui três atributos que possibilitam realizar operações de entrada e saída padrão pela console.
Err
Atributo estático do tipo PrintStream que representa o fluxo padrão de saída de erros;
In
Atributo estático do tipo InputStream que representa o fluxo padrão de entrada de dados;
out	
Atributo estático do tipo PrintStream que representa o fluxo padrão de saída de dados.
	Estes atributos são estáticos, ou seja, podem ser acessados sem criar uma instância da classe:
System.err;
System.in;
System.out.
System.out
	O atributo out representa um objeto da classe PrintStream que aponta para a saída padrão. Todo dado impresso pelo atributo out será direcionado para o prompt de comando.
	A classe PrintStream possui dois métodos que possibilitam imprimir um dado no prompt de comando.
Estes métodos são:
print();
println().
	A única diferença entre eles é que o método print() faz com que o cursor permaneça na mesma linha após imprimir o dado e o método println() imprime o dado e termina a linha, passando para a próxima.
	Estes métodos podem ser chamados com diferentes tipos de argumentos, incluindo todos os tipos primitivos e objetos de quaisquer classes. Seus argumentos podem ser um valor booleano, um caracter, um vetor de caracteres, um número de ponto flutuante, um número inteiro ou um objeto qualquer.
	Quaisquer dados impressos com o método println() podem ser impressos do mesmo modo com o método print(), porém para inserir uma quebra de linha com o método print() devemos utilizar o caracter de escape "\n".
Exemplo:
			System.out.println("Testando 123");
			System.out.print("Testando 123\n");
	O caracter de escape "\n" representa um avanço de linha, ou seja, o cursor passará para a próxima linha.
	Não necessariamente é preciso utilizar a instrução System.out para representar o fluxo de saída padrão, podemos criar um objeto do tipo PrintStream e atribuir a ele a referência System.out.
Exemplo:
			PrintStream saida = System.out;
	Dado o exemplo acima, os métodos print() e println() podem ser chamados a partir do objeto criado.
Exemplo:
			saida.print("Teste");
			saida.println();
System.in
	O atributo in da classe System representa uma referência à entrada padrão do sistema. Este atributo é um objeto da classe InputStream. Todo dado informado através do prompt de comando deve ser interceptado com o uso deste atributo.
	A classe InputStream possui um método para a leitura de dados, chamado read(). Uma das formas de se chamar este método é passando como argumento um vetor de bytes.
	Este procedimento envolve a declaração de um vetor do tipo byte e sua utilização na chamada do método read(). Será neste vetor de bytes que o dado informado será armazenado. Em seguida pode-se transferir o conteúdo deste vetor para um objeto da classe string e posteriormente transferi-lo para qualquer tipo primitivo.
Exemplo:
		byte mbyte[] = new byte[100];
		System.out.println("Digite a sua idade");
		System.in.read(mbyte);
		String mString = new String(mbyte).trim();
		int idade = Integer.parseInt(mString);
		System.out.println("Idade convertida " + idade);
	É importante observar que o método read() pode lançar uma exceção do tipo IOException e o método parseInt() pode lançar uma exceção do tipo NumberFormatException, e devido a isto, estas instruções devem ser declaradas dentro de um bloco protegido e conter o tratamento para estas exceções.
Exemplo:
import java.io.*;
public class TesteInputStream{
 public static void main (String args[]){
 	try{
 	 byte mbyte[] = new byte[100];
 System.out.println("Digite a sua idade");
 	 System.in.read(mbyte);
 	 String mString = new String(mbyte).trim();
 	 int idade = Integer.parseInt(mString);
 	 System.out.println("Idade convertida em int " + idade);
 }
 catch(IOException e){
 System.out.println("Erro de I/O");
 }
 catch(NumberFormatException e){
 System.out.println("Erro na conversão");
 }
 }
}
Entrada e Saída de dados por JOptionPane
	As caixas de diálogo têm uma função importante na interação do programa com o usuário. É por meio delas que dados são solicitados pelo programa ao usuário e é por meio delas que mensagens de erro, informações, alertas e avisos podem ser exibidos para o usuário.
	A classe javax.swing.JOptionPane facilita a tarefa de exibir diálogos padronizados que solicitem algum valor ao usuário ou que exibam alguma informação. Apesar da aparente complexidade, em função do grande número de métodos que ela implementa, a maioria das tarefas realizadas com essa classe se resumirá a chamadas de uma única linha a um dos seguintes métodos.
showMessageDialog():
Caixa de diálogo que apresenta uma mensagem, possibilitando acrescentar ícones de alerta ao usuário;
showConfirmDialog():
Caixa de diálogo que, além de emitir uma mensagem, possibilita ao usuário responder a uma pergunta;
showInputDialog():
Caixa de diálogo que, além de emitir uma mensagem, permite a entrada de um texto;
showOptionDialog():
Caixa de diálogo que abrange os três tipos anteriores.
	Uma característica particular da classe JOptionPane é a não necessidade de declaração de objetos para a criação das caixas, que são criadas diretamente pelos métodos dessas classes.
showMessageDialog()
	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 menagem>, <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 informada 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.
	Ícone
	Comando
	
 Pergunta
	JOptionPane.QUESTION_MESSAGE
	
 Informação
	JOptionPane.INFORMATION_MESSAGE
	
 Alerta
	JOptionPane.WARNING_MESSAGE
	
 Erro
	JOptionPane.ERROR_MESSAGE
	Vazio (somente mensagem)
	JOptionPane.PLAIN_MESSAGE
showConfirmDialog()
	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 ( YES_NO_OPTION ou 0;
Apresentam os botões YES, NO e CANCEL ( YES_NO_CANCEL ou 1;
Apresentam os botões OK e CANCEL ( OK_CANCEL_OPTION ou 2.
Sintaxe:
JoptionPane.showConfirmDialog(Component, <mensagem>, <título da menagem>, <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.
showInputDialog()
	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 menagem>, <botões presentes>, <tipo de mensagem>).
showOptionDialog()
	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.
Tipo de mensagem: Uma das variáveis de pergunta, informação, alerta, ou erro;
Í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.
Seleção Padrão: O objeto que representa a seleção padrão, caso as opções YES_NO_OPTION, YES_NO_CANCEL_OPTION ou OK_CANCEL_OPTION não estejam sendo usadas.
Exemplos da utilização dos métodos vistos:
import javax.swing.JOptionPane;
public class TesteJOptionPane {
 public static void main(String args[]){
 int resposta = JOptionPane.NO_OPTION;
 while (resposta == JOptionPane.NO_OPTION){
 String sexo = JOptionPane.showInputDialog(null, "Digite seu sexo. \nM para masculino e F para feminino" , "Definir sexo", JOptionPane.PLAIN_MESSAGE);
 if (sexo.equalsIgnoreCase("M")){
 JOptionPane.showMessageDialog(null, "Você é do sexo masculino!", "Sexo Masculino", JOptionPane.INFORMATION_MESSAGE);
 }
 else if (sexo.equalsIgnoreCase("F")){
 JOptionPane.showMessageDialog(null, "Você é do sexo feminino!", "Sexo Feminino", JOptionPane.INFORMATION_MESSAGE);
 }
 else{
 JOptionPane.showMessageDialog(null, "Sexo inválido", "Invalido", JOptionPane.ERROR_MESSAGE);
 }
 //Exemplo de utilizacao do metodo showConfirmDialog()
 resposta = JOptionPane.showConfirmDialog(null, "Deseja encerrar o programa?", "Encerrar", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE);
 }
 JOptionPane.showMessageDialog(null, "O programa será encerrado", "Finalizar", 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"};
		//Exemplo da utilização do metodo showOptionDialog()
		int resp = JOptionPane.showOptionDialog(null, "Qual sua idade?", "Idade", 0, JOptionPane.QUESTION_MESSAGE, null, escolha, escolha[0]);
		String idade = escolha[resp];
		JOptionPane.showMessageDialog(null, "Foi informado: " + idade, "Informação", JOptionPane.INFORMATION_MESSAGE);
 System.exit(0);
	}
}
As Classes I/O
	Existe ainda uma outra forma de realizar entrada de dados. A classe Scanner quebra uma entrada de dados alfanumérica em tokens (pedaços) utilizando um delimitador padrão, o qual por default é representado por um espaço em branco.
	Os tokens (pedaços) resultantes podem então ser convertidos em valores de diferentes tipos primitivos utilizando os vários métodos "next".
	Por exemplo, o código abaixo possibilita ao usuário ler um número inteiro vindo do System.in.
	Scanner sc = new Scanner(System.in);
	int i = sc.nextInt();
Métodos
public String next()
	Procura e retorna um conjunto de caracteres alfanuméricos até que o delimitador padrão seja encontrado.
Veja o exemplo abaixo:
import java.util.Scanner;
public class ExemploNext {
	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);
		
		System.out.print("Entre com uma informação: ");
		String str1 = sc.next();
		String str2 = sc.next();
		String str3 = sc.next();
		System.out.println("Str1: " + str1);
		System.out.println("Str2: " + str2);
		System.out.println("Str3: " + str3);
	}
}
	Após a mensagem "Entre com uma informação" foi digitado na console: "João José Silva".
	Saída gerada:
				Str1: João
				Str2: José
				Str3: Silva
	O método next dividiu a informação de entrada em três tokens (pedaços), pois o delimitador padrão é o espaço em branco. Ou seja, a cada espaço em branco encontrado o método next retorna um conjunto de caracteres.
João José Silva
public String nextLine()
	O método nextLine procura por um fim de linha e retorna todos os caracteres alfanuméricos que foram encontrados. Veja o exemplo abaixo:
import java.util.Scanner;
public class ExemploNextLine {
	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);
		System.out.print("Entre com uma informação: ");
		String str1 = sc.nextLine();
		System.out.println("Str1: " + str1);
	}
}
	Após a mensagem "Entre com uma informação" foi digitado na console: "João José Silva".
	Saída gerada: 	str1: João José Silva
	O método nextLine() não procura pelo delimitador (caracter branco) mas sim pela quebra de linha. Devido a isto, foi possível armazenar na variável str1 o nome completo, inclusive com os caracteres brancos.
public int nextInt()
	Procura pelo próximo token (pedaço) de uma entrada alfanumérica como um tipo primitivo int. Este método irá lançar uma exceção do tipo InputMismatchException se o próximo token (pedaço) não puder ser convertido em um tipo primitivo inteiro.
Veja o exemplo abaixo:
import java.util.Scanner;
public class ExemploNextInt {
	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);
		System.out.print("Entre com um valor: ");
		int num = sc.nextInt();
		System.out.println("num: " + num);
	}
}
	Após a mensagem "Entre com um valor" foi digitado na console: 752.
	Saída gerada:
				num: 752
public float nextFloat()
	Procura pelo próximo token (pedaço) de uma entrada alfanumérica como um tipo primitivo float. Este método irá lançar uma exceção do tipo InputMismatchException se o próximo token (pedaço) não puder ser convertido em um tipo primitivo float.
Veja o exemplo abaixo:
import java.util.Scanner;
public class ExemploNextFloat {
	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);
		
		System.out.print("Entre com um valor: ");
		float num = sc.nextFloat();
		System.out.println("num: " + num);
	}
}
	Após a mensagem "Entre com um valor" foi digitado na console: -125,75.
	Saída gerada:
				num: -125.75
public double nextDouble()
	Procura pelo próximo token (pedaço)de uma entrada alfanumérica como um tipo primitivo double. Este método irá lançar uma exceção do tipo InputMismatchException se o próximo token (pedaço) não puder ser convertido em um tipo primitivo double.
Veja o exemplo abaixo:
import java.util.Scanner;
public class ExemploNextDouble {
	public static void main(String[] args) {
		Scanner sc = new Scanner (System.in);
		System.out.print("Entre com um valor: ");
		double num = sc.nextDouble();
		System.out.println("num: " + num);
	}
}
	Após a mensagem "Entre com um valor" foi digitado na console: -125,7532.
	Saída gerada:
				num: -125.7532
	Devemos sempre lembrar que o delimitador padrão para a classe Scanner é o espaço em branco, porém caso exista o interesse de trocar este delimitador por outro basta utilizar o método "useDelimiter".
Exemplo:
	Scanner sc = new Scanner (System.in);
	sc.useDelimiter("\r\n");
	O exemplo acima ajusta o delimitador para a quebra de linha.
Exercícios Sobre Entrada e Saída de Dados Pelo Teclado
Analise o código Java abaixo e responda:
public class TestePrintln{
 public static void main (String args[]){
 	System.out.println("Notificação enviada");
 	System.out.print("Notificação enviada\n");
 }
}
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"?
R:
O método print() faz com que o cursor permaneça na mesma linha após imprimir o dado e o método println() imprime o dado e termina a linha, passando para a próxima.
Para o método print() ter o mesmo comportamento do método println() basta inserir no final do texto um caracter de escape "\n" que representa uma quebra de linha.
Analise o código Java abaixo e responda: Quantas novas linhas estão sendo inseridas antes de imprimir a palavra "Iniciando. . ."? Justifique a resposta.
public class TestePrintln2{
 public static void main (String args[]){
 	System.out.println();
 	System.out.print("1");
 	System.out.print("\n2");
 	System.out.println("\n3\n");
 	System.out.print("Iniciando. . .");
 }
}
R:
Estão sendo inseridas cinco novas linhas antes de imprimir a palavra "Iniciando. . ." pois, na primeira instrução está sendo inserida uma linha, na segunda não está sendo inserida nova linha, na terceira está sendo inserida uma linha e na quarta instrução estão sendo inseridas três novas linhas.
Faça um programa em Java que imprima na tela a figura abaixo. Você deve utilizar um caracter por vez, ou seja, imprima apenas um * (asterisco) ou um espaço em branco de cada vez.
 ******** * *
 * * *
 ******* * *
 * * *
 * * ************
 * * *
 * * *
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. Peça para o usuário informar se deseja continuar utilizando a calculadora ou se quer encerrar o programa. Utilize o método read() do atributo in da classe System para obter os dados via console.
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().
Faça um programa em Java que peça para o usuário informar: Nome completo, sexo, idade, endereço, telefone, profissão e salário. Em seguida imprima estes informações na tela. Utilize os métodos da classe Scanner para obter os dados via console.
 
Token 3
Token 2
Token 1
delimitador padrão (espaço em branco)
�PAGE �
�PAGE �11�
_1235029341/ole-[42, 4D, 6E, 0C, 00, 00, 00, 00]
_1235029402/ole-[42, 4D, BA, 09, 00, 00, 00, 00]
_1235029449/ole-[42, 4D, 16, 0B, 00, 00, 00, 00]
_1235029285/ole-[42, 4D, 2E, 0A, 00, 00, 00, 00]

Continue navegando