Estruturas Condicionais em Java
As estruturas condicionais estão entre os elementos fundamentais da maioria das linguagens de programação. Elas permitem que a execução do programa siga caminhos diferentes, dependendo de determinadas condições.
Em Java, há três formas principais de expressar lógica condicional:
if/else/else ifswitch/case- Operador ternário
Estrutura if / else
A instrução if avalia uma condição booleana e, se o resultado for verdadeiro, executa um bloco de código específico:
int num1 = 6;
int num2 = 4;
if (num1 > num2) {
System.out.println("O primeiro número é maior que o segundo");
}Após a palavra-chave if, vem a condição entre parênteses. Se ela for verdadeira, o código dentro do bloco entre chaves será executado. Neste exemplo, como 6 > 4, o resultado da condição é true, e a mensagem é exibida no console.
Caso a condição não seja satisfeita, o bloco if será ignorado. Para executar uma ação alternativa quando a condição for falsa, pode-se incluir um bloco else:
int num1 = 6;
int num2 = 4;
if (num1 > num2) {
System.out.println("O primeiro número é maior que o segundo");
} else {
System.out.println("O primeiro número é menor que o segundo");
}Neste caso, se num1 não for maior que num2, a mensagem do bloco else será exibida.
Entretanto, ao comparar números, é comum ter três possibilidades: maior, menor ou igual. Para lidar com condições adicionais, pode-se usar else if:
int num1 = 6;
int num2 = 8;
if (num1 > num2) {
System.out.println("O primeiro número é maior que o segundo");
} else if (num1 < num2) {
System.out.println("O primeiro número é menor que o segundo");
} else {
System.out.println("Os números são iguais");
}Também é possível combinar condições com operadores lógicos, como && (E lógico):
int num1 = 8;
int num2 = 6;
if (num1 > num2 && num1 > 7) {
System.out.println("O primeiro número é maior que o segundo e maior que 7");
}Nesse caso, o bloco será executado somente se ambas as condições forem verdadeiras.
Estrutura switch
A instrução switch é uma alternativa ao uso repetido de if/else if, especialmente quando se deseja comparar um valor contra múltimos casos possíveis:
int num = 8;
switch (num) {
case 1:
System.out.println("O número é 1");
break;
case 8:
System.out.println("O número é 8");
num++;
break;
case 9:
System.out.println("O número é 9");
break;
default:
System.out.println("O número não é 1, 8 ou 9");
}O valor entre parênteses após switch é comparado sequencialmente com os valores dos blocos case. Quando ocorre uma correspondência, o bloco correspondente é executado. O uso de break evita que os blocos seguintes também sejam executados.
Se break for omitido, a execução continuará nos próximos blocos até encontrar o próximo break (ou o final do switch). Por exemplo:
int num = 8;
switch (num) {
case 8:
System.out.println("O número é 8");
num++;
case 9:
System.out.println("O número é 9");
break;
default:
System.out.println("O número não é 8 nem 9");
}Neste caso, como num é 8, o primeiro bloco é executado, incrementando num para 9, e o segundo bloco também é executado, resultando na impressão de ambas as mensagens.
Para lidar com valores que não correspondem a nenhum dos case, pode-se definir um bloco default, que é opcional.
Também é possível agrupar múltiplos case para um mesmo resultado:
int num = 8;
switch (num) {
case 1:
System.out.println("O número é 1");
case 8:
case 9:
case 10:
System.out.println("O número é 8, 9 ou 10");
break;
default:
System.out.println("O número não é 1, 8, 9 ou 10");
}Aqui, os valores 8, 9 e 10 compartilham o mesmo bloco de código, o que pode ser útil para evitar repetição.
Operador ternário
O operador ternário oferece uma forma compacta de escrever expressões condicionais simples. Sua sintaxe é:
condição ? valor_se_verdadeiro : valor_se_falso;Exemplo:
int x = 3;
int y = 2;
int z = x < y ? (x + y) : (x - y);
System.out.println(z);Neste caso, a condição x < y é avaliada. Se for verdadeira, z receberá o resultado de x + y; caso contrário, receberá x - y. Como 3 < 2 é falso, o valor atribuído a z será 1.
📝 Exercícios
Tarefa 1
O que será exibido no console ao executar o seguinte código?
public class Program {
public static void main(String[] args) {
int a = 3;
if (a > 0) {
System.out.println("Número positivo");
}
System.out.println("Fim do programa");
}
}Resposta
a > 0 é verdadeira, já que 3 é maior que 0.
Portanto, a mensagem "Número positivo" será exibida. Em seguida, o programa continua e imprime "Fim do programa", pois essa linha está fora do bloco if.
Número positivo
Fim do programaTarefa 2
O que será exibido no console ao executar o seguinte código? Justifique sua resposta.
public class Program {
public static void main(String[] args) {
int a = 5;
if (a <= 0)
if (a == 5)
a++;
else
a--;
System.out.println(a);
}
}Resposta
a <= 0 é falsa, o bloco if interno não será executado. Nenhuma alteração ocorre na variável a, que permanece com o valor original 5. O console exibirá:
5Tarefa 3
O que será exibido no console ao executar o código abaixo? Explique o motivo.
public class Program {
public static void main(String[] args) {
int a = 5;
switch (a) {
case 4:
a++;
case 5:
a++;
case 6:
case 7:
case 8:
a++;
break;
case 9:
a++;
break;
default:
a++;
}
System.out.println(a);
}
}Resposta
a é 5. O programa entra no case 5 e executa a++, resultando em a = 6. Como não há break, a execução continua nos próximos blocos.
case 6 (que compartilha o mesmo bloco com os case 7 e 8), onde a++ é executado novamente, resultando em a = 7. Em seguida, o break interrompe a execução do switch.
7Tarefa 4
Escreva um programa que leia dois números inteiros do usuário (com Scanner), compare-os e imprima se são iguais, ou se o primeiro é maior ou menor que o segundo.
e compare os valores informados. O programa deve imprimir se os números são iguais, ou se o primeiro é maior ou menor que o segundo.
Resposta
import java.util.Scanner;
public class Program {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
System.out.print("Digite o primeiro número: ");
int num1 = in.nextInt();
System.out.print("Digite o segundo número: ");
int num2 = in.nextInt();
if (num1 > num2) {
System.out.println("O primeiro número é maior que o segundo");
} else if (num1 < num2) {
System.out.println("O primeiro número é menor que o segundo");
} else {
System.out.println("Os dois números são iguais");
}
in.close();
}
}