Uma das formas de criar repetições em Java é com a estrutura while
(enquanto).
A repetição while realiza um teste lógico no início do loop, e cada vez que o teste retornar verdadeiro, os comandos associados ao laço são executados. Se retornar falso, o laço é encerrado e o processamento volta para o fluxo principal do programa.
Veja um exemplo de repetição while em Java:
public static void main(String[] args) {
int cc = 1;
while(cc <= 20) {
System.out.println("Cambalhota " + cc);
cc++;
}
}
Temos também a opção continue
para não interromper a execução de um código ao não mostrar determinados valores:
public static void main(String[] args) {
int cc = 0;
while(cc < 10) {
cc++;
if(cc == 5 || cc == 7) {
continue;
}
System.out.println("Cambalhota " + cc);
}
}
E temos também o break
para interromper (não confundir com o break do switch e case). Veja um exemplo:
public static void main(String[] args) {
int cc = 0;
while(true) {
cc++;
if(cc == 2 || cc == 3) {
continue;
}
else if(cc == 7) {
break;
}
System.out.println("Cambalhota " + cc);
}
}
Vamos criar um programa Java em Swing que conte números. Esse é o código do clicar botão:
int cc = 1;
String contagem = "";
while(cc <= 10) {
contagem += cc + " ";
cc++;
}
lblCont.setText(contagem);
Vamos fazer um exercício, um fatorial em Java Swing. Nesse vamos colocar o evento change no componente numérico. Veja o código:
int num = Integer.parseInt(numFat.getValue().toString());
int fat = 1;
int cont = num;
String resul = "";
while(cont >= 1) {
fat *= cont;
cont--;
if(cont >= 1) {
resul += (cont + 1) + " x ";
}
else {
resul += (cont + 1);
}
}
lblFat.setText(Integer.toString(fat));
lblCont.setText(resul);
Outra forma de criar repetição é a do while
, significando repita. Diferente do while, a do while é colocada no final, praticamente o contrário dela. Veja um exemplo:
int cc = 1;
do {
System.out.println("Cambalhota:" + cc);
cc++;
}
while(cc < 4);
Veja um exemplo mais complexo:
int n, s = 0;
String resp;
Scanner teclado = new Scanner(System.in); // Adicionar Importação.
do {
System.out.print("Digite um número: ");
n = teclado.nextInt();
s += n;
System.out.print("Quer continuar? [S/N] ");
resp = teclado.next();
}
while(resp.equals("s"));
System.out.println("A soma de todos os valores é " + s);
PS: Pode ver que, por esse fator, o comando do será executado, e só depois ele testará, independente do valor recebido. O que garante que pelo menos uma vez, o bloco de comandos é executado.
Vamos criar um programa que criará janelas automaticamente, nesse caso, a classe principal permanecerá marcada. Na importação, colocaremos javax.swing.JOptionPane
para isso.
Para exibir a mensagem, usamos JOptionPane.showMessageDialog()
, assim:
JOptionPane.showMessageDialog(null, "Olá Mundo!");
Para mudar o que está escrito em cima, poderíamos fazer assim:
JOptionPane.showMessageDialog(null, "Olá Mundo!", "Boas Vindas", JOptionPane.INFORMATION_MESSAGE);
PS: No lugar do INFORMATION_MESSAGE
, podemos usar WARNING_MESSAGE
e ERROR_MESSAGE
.
Para perguntas, podemos fazer assim:
int pergunta = JOptionPane.showConfirmDialog(null, "Escolha uma opção", "Pergunta", JOptionPane.YES_NO_OPTION);
if(pergunta == JOptionPane.YES_OPTION) {
JOptionPane.showMessageDialog(null, "Escolheu o sim!", "Info", JOptionPane.INFORMATION_MESSAGE);
}
else {
JOptionPane.showMessageDialog(null, "Escolheu o não!", "Info", JOptionPane.INFORMATION_MESSAGE);
}
Para pegar valores, usamos o JOptionPane.showInputDialog()
, dessa forma:
JOptionPane.showInputDialog(null, "Informe um número:", "Entrada", JOptionPane.QUESTION_MESSAGE);
Veja um exemplo com mais de uma janela:
int num = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe um número:", "Entrada", JOptionPane.QUESTION_MESSAGE));
JOptionPane.showMessageDialog(null, "Você digitou o valor " + num, "Info", JOptionPane.INFORMATION_MESSAGE);
Veja outro exemplo aplicado com a repetição:
public static void main(String[] args) {
int num;
do {
num = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe um número (valor 0 interrompe):", "Entrada", JOptionPane.QUESTION_MESSAGE));
}
while(num != 0);
}
Veja um exemplo no qual mostramos os resultados de números somados:
int num, soma = 0;
do {
num = Integer.parseInt(JOptionPane.showInputDialog(null, "<html>Informe um número<br/><i>(valor 0 interrompe)</i>:</html>", "Matemática", JOptionPane.QUESTION_MESSAGE));
soma += num;
}
while(num != 0);
JOptionPane.showMessageDialog(null, "<html>Resultado Final!<hr/>Somatório vale " + soma + "</html>", "Info", JOptionPane.INFORMATION_MESSAGE);
Para mostrar os valores passados (total, pares, ímpares, acima de 100 e média, faremos isso):
int num, soma = 0;
int cont = 0;
int par = 0;
int impar = 0;
int cent = 0;
float media = 0;
do {
num = Integer.parseInt(JOptionPane.showInputDialog(null, "<html>Informe um número<br/><i>(valor 0 interrompe)</i>:</html>", "Matemática", JOptionPane.QUESTION_MESSAGE));
soma += num;
cont += 1;
if(num == 0) {
cont -= 1;
break;
}
else if(num % 2 == 0) {
par += 1;
}
else {
impar += 1;
}
// Esse é outro Condicional.
if(num >= 100) {
cent += 1;
}
media = soma / cont;
}
while(true);
JOptionPane.showMessageDialog(null, "<html>Resultado Final!<br/><hr/>Somatório vale " + soma + "<br/>Total de Valores: " + cont + "<br/>Total de Pares: " + par + "<br/>Total de Ímpares: " + impar + "<br/>Valores Acima de 100: " + cent + "<br/>Média dos Valores: " + media + "</html>", "Resultado", JOptionPane.INFORMATION_MESSAGE);