Estrutura Condicional em Java
O Java contém três tipos de instruções de seleção. A instrução if realiza uma ação se uma condição for verdadeira ou pula a ação se a condição for falsa. A instrução if... else realiza uma ação se uma condição for verdadeira e realiza uma ação diferente se a condição for falsa. A instrução de seleção switch realiza uma de muitas ações diferentes, dependendo do valor de uma expressão.
A instrução if é uma instrução de uma única seleção porque seleciona ou ignora uma única ação (ou um único grupo de ações). A instrução if... else é chamada instrução de seleção dupla porque seleciona entre duas ações diferentes (ou grupos de ações). A instrução switch é chamada de instrução de seleção múltipla uma vez que seleciona entre muitas ações diferentes (ou grupos de ações).
Instrução de uma única seleção
A instrução IF é uma instrução de controle de uma única entrada e uma única saída.
Exemplo 1: verificar se um número fornecido pelo usuário é impar. Se for, exibir a mensagem “O número _____ informado é ímpar”.
import javax.swing.JOptionPane;
public class impar {
public static void main(String args[]){
int numero;
numero = Integer.parseInt(JOptionPane.showInputDialog ("Digite um número"));
/*avalia se o número é impar
* ao verificar se o resto da divsão por 2 * é igual a 1
*/
if (numero % 2 == 1){
JOptionPane.showMessageDialog(null,
"O número "+numero+" é ímpar");
} }
}
Exemplo 2: determinar o maior de dois números dados. Suponha que o primeiro deles é o maior, armazenando-o em uma variável MAIOR e depois, compare se os maior procurado é o segundo dos números dados, neste caso o conteúdo da variável MAIOR deve ser alterado.
//importa para utilizar a classe Scanner import java.util.*;
//o nome da nova classe public class maior_de_dois {
//a função principal
public static void main(String args[]){
//declara entrada como Scanner, para ler do teclado Scanner entrada = new Scanner(System.in);
//declara as três variáveis int a, b, maior;
//exibe uma mensagem solicitando a digitação dos números System.out.println("Digite dois números inteiros: ");
//armazena os números em a e b
a = entrada.nextInt();
b = entrada.nextInt();
//atribui a para maior maior = a;
//verifica se b é maior que a if (b > a){
//se for, atribui b para maior maior = b;
}
//exibe a mensagem com os dois valores digitados e o valor de maior
System.out.printf("O maior dos números %d e %d é %d", a,b,maior);
} }
Exemplo 3: ordenar os conteúdos das variáveis X e Y. Só há necessidade de se realizar alguma ação se o conteúdo de Y for maior que o conteúdo de X. Neste caso, deve-se fazer a permuta dos conteúdos de X e de Y.
//para usar a classe Graphics import java.awt.*;
//para usar a classe JApplet e JOptionPane import javax.swing.*;
//classe principal
public class ordena extends JApplet{
//declaração de variáveis de instância int X, Y;
//método para receber informações public void init(){
//variáveis que receberão dados digitados pelo usuário String num1, num2;
//variável auxiliar para ordenação int AUX;
//atribui o valor digitado para num1 e num2 num1 = JOptionPane.showInputDialog(
"Digite o valor de X");
num2 = JOptionPane.showInputDialog(
"Digite o valor de Y");
//atribui num1 e num2 para X e Y X = Integer.parseInt(num1);
Y = Integer.parseInt(num2);
//mostra os valores de X e Y na ordem que foram digitados JOptionPane.showMessageDialog(null,
"Números digitados: X "+X +" Y "+Y);
//verifica se X é maior que Y if (X > Y){//se for
//atribui X para a variável auxiliar AUX = X;
//atribui Y para X X = Y;
/*Y receberá o valor de X * que ficou armazenado * na variável auxiliar */
Y = AUX;
} }
public void paint(Graphics g){
super.paint(g);
//desenha um retângulo
g.drawRect(10, 10, 200, 30);
//escreve os valores ordenados de X e Y g.drawString("Números ordenados: X "+X
+" Y "+Y, 20, 30);
} }
A instrução if de uma única seleção realiza uma ação indicada somente quando a condição é true; caso contrário, a ação é pulada.
Instrução de seleção dupla
A instrução de seleção dupla if... else permite que o programação especifique uma ação a realizar quando a condição é verdadeira e uma ação diferente quando a condição é falsa.
Exemplo 1: a empresa XSoftwares Ltda. concedeu um bônus de 20% do valor do salário a todos os funcionários com tempo de trabalho na empresa igual ou superior a cinco anos, e 10% aos demais. Calcular e exibir o valor do bônus.
import javax.swing.JOptionPane;
public class bonus {
public static void main(String args[]){
//declaração das variáveis necessárias para a resolução do problema
float salario, premio;
int tempo;
//leitura (entrada) dos valores com as conversões adequadas salario = Float.parseFloat(JOptionPane.showInputDialog(
"Salário"));
tempo = Integer.parseInt(JOptionPane.showInputDialog(
"Tempo de empresa"));
//avalia a condição:
if (tempo >= 5){
//se o resultado for verdadeiro premio = salario * 0.20f;
} else{
//se o resultado for falso premio = salario * 0.10f;
}
JOptionPane.showMessageDialog(null, "O valor do bônus é:
"+premio);
} }
Exemplo 2: calcule a área de um triângulo, dados os comprimentos dos seus lados. Para os números serem comprimentos dos lados de um triângulo, cada um deles precisa ser menor que a soma dos outros dois.
//para usar a classe JOptionPane import javax.swing.*;
//para formatar números reais import java.text.DecimalFormat;
//classe principal
public class area_triangulo { //função principal
public static void main(String args[]){
//num_real recebe o formato de número decimal
DecimalFormat num_real = new DecimalFormat ("0.000");
//declaração das variáveis float x, y, z, area, semiper;
//atribuição dos valores para x, y e z
x = Float.parseFloat(JOptionPane.showInputDialog(
"Digite o primeiro lado: "));
y = Float.parseFloat(JOptionPane.showInputDialog(
"Digite o segundo lado: "));
z = Float.parseFloat(JOptionPane.showInputDialog(
"Digite o terceiro lado: "));
//verifica se cada lado é menor que a soma dos outros dois if ((x < y+z) && (y < x+z) && (z < x+y)){//se for
//acha o semiperímetro semiper = (x + y + z)/2;
//calcula a área
area = (float)Math.sqrt(semiper*
(semiper-x)*(semiper-y)*(semiper-z));
//exibe a área no formato de num_real JOptionPane.showMessageDialog(null,
"A área do triângulo é:
"+num_real.format(area));
}
else{//caso a verificação seja falsa
//exibe a mensagem informando que não é um triângulo JOptionPane.showMessageDialog(null,
"Os valores não podem ser comprimentos dos lados de um triângulo");
} }
}
Operador condicional
O Java fornece o operador condicional ?:, que pode ser utilizado no lugar de uma instrução if... else. Esse é o único operador ternário
1do Java. Juntos, os operandos e o símbolo ?: formam uma expressão condicional.
O primeiro operando (à esquerda do ?) é uma expressão booleana
2, o segundo operando (entre o ? e :) é o valor da expressão condicional se a expressão booleana for true, e o terceiro operando (à direita do :) é o valor da expressão condicional se a expressão booleana for avaliada como false.
Exemplo: imprimir ‘Aprovado’ se a média do aluno for maior ou igual a 60, mas imprimir ‘Reprovado’ se for menor que 60.
import java.util.Scanner;
public class mediaaluno {
public static void main(String args[]){
Scanner entrada = new Scanner(System.in);
float media;
System.out.print("Digite a média do aluno: ");
media = entrada.nextFloat();
System.out.println(media>=60 ? "Aprovado" : "Reprovado");
} }
Instruções if... else aninhadas
Um programa pode testar múltiplos casos colocando instruções if... else dentro de outras instruções if... else para criar instruções if... else aninhadas.
1 Significa que ele recebe três operandos.
2 Uma condição que avalia um valor boolean – true ou false.