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 if
switch
/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 programa
Tarefa 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á:
5
Tarefa 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
.
7
Tarefa 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();
}
}