Neste
tópico iremos abordar a utilização das classes System, Scanner
e JoptionPane, que são classes de entrada e saída de dados.
System
O
“System.out.println();” é utilizado para exibição de textos sendo uma saída padrão.
Se
dividimos o código “System.out.println();”
em partes, podemos ver que ele e é composto por uma classe, um
atributo e um método.
O
atributo utilizado foi o “out.”
pertencente a classe “System”
do pacote “java.lang”, que é um pacote do java e não precisa
ser importado, pois ele é importado automaticamente.
Este
atributo promove a saída de dados.
O
método utilizado foi o “println” que é pertencente à
classe "PrintStream" do pacote “java.io” que neste caso, não é
necessário importar.
Existem
mais dois tipos de métodos, o "print" e "printf".
A
diferença entre esses métodos é que o método print não pula
linha, já o println pula linha, não permitindo que o conteúdo
esteja todo em uma linha só e o printf imprime o conteúdo de
maneira já formatada.
Com
estes métodos em conjunto com o atributo e a classe, nos permite
imprimir o que se deseja.
Um
exemplo de sua utilização:
public class ExemploDeSaidaPadrao {
public static void main(String[] args) {
System.out.println("Saída Padrão em Java");
System.out.println("Linha 1");
System.out.println("Linha 2");
System.out.println("Linha 3");
}
}
Dentro
do parênteses e das aspas, coloca-se o texto desejado e caso queira
visualizar o retorno do dado inserido, basta utilizar sinal de adição
“+” e em seguida a variável onde está armazenado o dado.
Ex.
""public class Entrada {
public static void main(String[] args) {
Scanner entrada = new Scanner(System.in);
int idade;
System.out.println("Digite sua idade: ");
idade = entrada.nextInt();
System.out.println("Sua idade é " + idade + "\n");
}
}""
*Observe que neste exemplo foi utilizada a Classe Scanner para a entrada de dado.
Ainda
podemos usar os Caracteres de Escape.
Caracteres
de escape são caracteres que auxiliam na formatação da saída do
conteúdo quando usado dentro do método.
Abaixo
temos alguns exemplos.
Fonte: http://www.devmedia.com.br/system-out-objeto-de-saida-em-java/25240 |
Até então, para dar saída nos dados para que seja visualizado, utiliza-se o comando “System.out.println();”. Mas, e para que o usuario insira os dados?
Scanner
O
usuário poderá inserir os dados utilizando a classe de entrada
Scanner ou JoptionPane, mas primeiro iremos falar sobre a classe
Scanner.
Para
inserir os dados utilizando a classe Scanner que faz parte do pacote
“java.util.” , primeiro temos que importa-lo digitando “import
java.util.Scanner;” logo no começo dos códigos. Assim o java
irá compreender que estamos utilizando o pacote “util”. Caso não
seja feita esta importação o Java implicara um erro.
Feito
este procedimento, ainda não se podeutilizar esta classe, pois
ainda não foi estanciado um objeto por ela.
Para
instanciar um objeto por ela, deve-se digitar, por exemplo:
“Scanner
ler = new Scanner(System in);”.
Agora
sim podemos receber dados do usuário pelo console, mas ainda há
problema.
Para
nós, tanto faz se o dado é do tipo int, string, byte, double e
assim vai, mas para o Java, isso tem uma enorme diferença, pois
dependendo do tipo de dado, o Java os aloca de maneiras diferentes na
memória e se não especificarmos o tipo de dados o Java não irá
compilar.
A tabela abaixo, descreve quais tipos de dados podem ser usados na
classe Scanner.
Fonte: http://www.devmedia.com.br/entrada-de-dados-classe-scanner/21366
*Neste
link você pode conferir um pouco mais sobre a classe Scanner
|
Neste video, podemos ver melhor a utilização da classe Scanner e de
alguns tipos de dados.
O Uso da classe Scanner em Java.
JOptionPane
Para
ter uma melhor interação programa - usuário, podemos utilizar a
classe JOptionPane que pertence ao pacote Swing.
Dentro
deste pacote Swing, existe diversas classes para a criação de
interfaces gráficas.
A
classe JOptionPane pode nos oferecer uma serie de métodos e através
desses métodos
são criadas caixas de dialogo.
Fonte: https://java.net/projects/nimbus/sources/svn/show/trunk/www/spec/images |
É
através delas que mensagens de erro, informações,
alertas e avisos podem ser exibidos para o usuário.
Mas
para usar a classe JOptionPane temos que importar o seu pacote da
mesma maneira que o pacote java.util da classe Scanner é importado.
O
pacote da classe JOptionPane é o “javax.swing”.
Como
foi dito, a classe JOptionPane pode gerar caixas de dialogo através
de métodos e podemos obte-las da seguinte maneira:
“JOptionPane.showInputDialog”. Este código tem a função
de Input , ou seja, de obter dados vindo do usuário. Mas que
fique claro que não existe só essa função de receber dados.
Abaixo
temos outros tipos de métodos :
showInputDialog();
- Este método gera uma caixa de dialogo que emite uma mensagem ao usuário e permite a entrada de dado. É um método do tipo String.
Para
receber outros tipos de dados é necessário fazer uma conversão.
Para
dados do tipo int, utilizamos o código integer.parseint
Ex.
integer.parseint(JoptionPane.showInputDialog(“mensagem”);
O
mesmo vale para os outro tipos de dados. Apenas o tipo de dado int
tem uma mudança no nome, pois neste caso, o seu nome é colocado por
inteiro, Integer.
Para
escrever a mensagem de visualização para o usuário, deve-se
colocar a mensagem como parâmetro e para armazenar os dados
inseridos pelo usuário dentro de variáveis, deve-se seguir o seguinte procedimento descrito no exemplo abaixo.
Ex.
(variável)
= JOptionPane.showInputDialog(“mensagem”) ;
""import javax.swing.JOptionPane;
public class CaixasDeInput {
public static void main(String[] args) {
String nome = null;
while (nome == null || nome.equals("")) {
nome = JOptionPane.showInputDialog("Qual o seu nome?");
if (nome == null || nome.equals("")) {
JOptionPane.showMessageDialog(null,
"Você não respondeu a pergunta.");
}
}
JOptionPane.showMessageDialog(null, "Seu nome é " + nome);
}
}""
showMessageDialog();
- Ja este método mostra uma caixa de diálogo que serve somente para
emitir mensagens ao usuário. Com esta caixa de dialogo não é
necessário o uso do “System.out.printl();”, portanto a mensagem
não aparecerá no console.
Fonte: http://bayusyafresalizdham.blogspot.com.br/2014/03/belajar-joptionpane.html |
Configurando ela, podemos exibir mensagens de erro, alerta ou a informação que o usuário deseja saber.
Este é um método do tipo void.
Ao
utilizar este método teremos dois parâmetros, o primeiro utiliza-se
como “null” e no segundo, insere a mensagem desejada.
Ex:
Joptionpane.showMessageDialog(null, “mensagem” )
""import javax.swing.JOptionPane;
public class CaixasDeDialogo {
public static void main(String[] args) {
String nome = null;
int resposta;
nome = JOptionPane.showInputDialog("Qual é o seu nome?");
resposta = JOptionPane.showConfirmDialog(null, "O seu nome é " + nome + "?");
if (resposta == JOptionPane.YES_OPTION) {
// verifica se o usuário clicou no botão YES
JOptionPane.showMessageDialog(null, "Seu nome é " + nome);
} else {
JOptionPane.showMessageDialog(null, "Seu nome não é " + nome);
}
}
}""
showConfirmDialog();
- Com este método, além de emitir uma mensagem de pergunta para o
usuário, possibilita confirmar as perguntas dando opções de
respostas que são definidas por botões na caixa de dialogo. Estas
respostas retornam na forma números para o programa já que esse
método é do tipo int.
Este
método é parecido com o anterior, ele pode recebe 3 ou até mais parâmetros dependendo da sua utilização.
Aqui há um exemplo de como pode ser feito o seu uso.
""import javax.swing.JOptionPane;
public class CaixasDeDialogo {
public static void main(String[] args) {
String nome = null;
int resposta;
nome = JOptionPane.showInputDialog("Qual é o seu nome?");
resposta = JOptionPane.showConfirmDialog(null, "O seu nome é " + nome + "?");
if (resposta == JOptionPane.YES_OPTION) {
// verifica se o usuário clicou no botão YES
JOptionPane.showMessageDialog(null, "Seu nome é " + nome);
} else {
JOptionPane.showMessageDialog(null, "Seu nome não é " + nome);
}
}
}""
Abaixo
temos alguns tipos de opções que são frequentemente utilizadas:
YES_NO_OPTION
– Apresenta a opção Sim e Não
YES_NO_CANCEL_OPTION
– Apresenta as opções Sim, Não e Cancelar.
OK_CANCEL_OPTION
– Apresenta as opções Ok e Cancelar.
YES_OPTION
– Apresenta somente a opção Sim.
NO_OPTION
– Apresenta somente a opção Não.
CANCEL_OPTION
– Apresenta somente a opção Cancelar.
OK_OPTION
– apresenta somente a opção OK.
OBS:
A utilização dos tipos de opções podem estar disponíveis de acordo com o
método usado.
showOptionDialog();
- Este método é a união de todos os outros anteriores.
Neste
site, pode-se conferir não somente os outros métodos, parâmetros e
exemplos de utilização existente para a classe JOptionPane, mas
também pode-se conferir outros pacotes e classes do universo Java.
Infelizmente
todo o conteúdo deste site esta em inglês.
DICA!
Procure
usar o comando "Ctrl + Barra de espaço".
Este
comando ajuda e muito o programador. Este comando completa os
códigos e é muito útil quando se usa o JOptioPane.
Mas cuidado ao
usar este comando para completar o método “show”.
Tenha bastante
atenção no método que você esta invocando para não haver
complicações posteriores.
Exercícios Teóricos
1) Caso
o usuário utilizasse classe System
sem importa-la, o java apresentaria um algum erro? Justifique sua resposta.
2) Quais
são as vantagens em utilizar a classe JOptionPane ?
Exercícios Práticos
1) Faça
um programa que calcule o índice de
massa corpórea (IMC) tendo como entrada de dados a classe Scanner e
como saída a classe JOptionPane.
Formula do IMC: Massa / Altura² .
2) Faça
um programa que faça
uma pergunta para o usuario utilizando como entrada de dados o
JOptionpane - empregando o uso do showInputDialogue e showConfirmDialogue ou
showOptionDialogue - e que utilize a Classe System para a saída.
Exercício
Pratico Resolvido.
Faça
um Programa que calcule a média de
salários de uma empresa, pedindo ao usuário a grade de funcionários
e os salários em JOptionPane e devolvendo a média em DOS.
Resolução:
- import javax.swing.JOptionPane;
- public class Media {
- public static void main(String[] args) {
- int quantidadeFuncionarios = 0;
- float salarioFuncionario = 0;
- float totalSalarios = 0;
- float mediaSalarial = 0;
- //variável contadora para laço
- int contadora = 0;
- quantidadeFuncionarios = Integer.parseInt(JOptionPane.showInputDialog(null,"Digite a quantidade de funcionários","Número de funcionários",JOptionPane.QUESTION_MESSAGE));
- while (contadora < quantidadeFuncionarios){
- contadora++;
- salarioFuncionario = Float.parseFloat(JOptionPane.showInputDialog(null,"Digite o salário do funcionário","Salário",JOptionPane.QUESTION_MESSAGE));
- totalSalarios = totalSalarios + salarioFuncionario;
- }
- mediaSalarial = totalSalarios / quantidadeFuncionarios;
- System.out.println("Média Salarial = " + mediaSalarial);
- System.exit(0);
- }
- }
REFERÊNCIAS
Para este artigo foi utilizado apenas sites como referencia.
http://www.tiexpert.net/programacao/java/showinputdialog.php
http://www.devmedia.com.br/entrada-de-dados-classe-scanner/21366
http://www.dm.ufscar.br/~waldeck/curso/java/part21.html
http://www.devmedia.com.br/system-out-objeto-de-saida-em-java/25240
http://www.tiexpert.net/programacao/java/joptionpane.php
http://www.tiexpert.net/programacao/java/println.php
http://www.javaprogressivo.net/2012/08/java-recebendo-dados-do-usuario-classe.html
http://www.tns.lcs.mit.edu/manuals/java-api-old/packages.html
http://docs.oracle.com/javase/7/docs/api/javax/swing/JOptionPane.html#DEFAULT_OPTION
http://pages.cs.wisc.edu/~hasti/cs368/JavaTutorial/NOTES/JavaIO_Scanner.html
http://www.caelum.com.br/apostila-java-orientacao-objetos/pacote-java-io/#15-3-inputstream-inputstreamreader-e-bufferedreader
VIDEOS REFERÊNCIA
http://www.youtube.com/watch?v=nXJnc5kP1EM
https://www.youtube.com/watch?v=7iFlkaewoKg
Grupo - Java Fiap
Componentes do grupo:
-Bruno Batista
-Murilo Araújo
-Rosiel Sebastião
Cara que comando extenso hein?
ResponderExcluirO que aconteceu contigo amigo que você está ausente? Me manda um email pra saber como você ta
O exemplo poderia ser orientado a objetos, não acham? Mas de qualquer forma o o tópico está muito bom!
ResponderExcluirPost Excelente!! Pude aprender muito e esclarecer dúvidas. Um grande abraço. Sidinei Carvalho
ResponderExcluir