Pular para o conteúdo

Decisão

Neste tópico, vamos reforçar as estruturas de decisão e conhecer a estrutura switch. O if/else decide entre dois caminhos; o switch serve para escolher entre vários caminhos a partir de um único valor. Vamos começar relembrando o if/else em Java e, em seguida, conhecer o switch.

Ao final, você vai saber quando usar if/else e quando usar switch.

Uma decisão permite que o programa siga caminhos diferentes conforme uma condição. Em Java, usamos if e else.

if (condicao) {
// executa se a condição for verdadeira
} else {
// executa se a condição for falsa
}

Veja um exemplo com uma condição simples:

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.print("Qual é a vida do personagem? ");
int vida = scanner.nextInt();
if (vida > 0) {
System.out.println("O personagem continua na batalha.");
} else {
System.out.println("O personagem foi derrotado.");
}
scanner.close();
}
}

Também podemos combinar condições com os operadores lógicos && (e) e || (ou):

if (vida > 0 && temPocao) {
System.out.println("O personagem pode continuar lutando.");
}

Parte 2: Escolhendo entre vários caminhos com switch

Seção intitulada “Parte 2: Escolhendo entre vários caminhos com switch”

Quando a decisão depende de comparar um único valor com várias opções, o if/else pode ficar repetitivo. Nesses casos, o switch deixa o código mais organizado.

switch (variavel) {
case valor1:
// código executado se variavel == valor1
break;
case valor2:
// código executado se variavel == valor2
break;
default:
// código executado se nenhum caso corresponder
break;
}

Cada case representa uma opção. O break serve para encerrar o switch depois de executar aquele caso. O default é opcional e funciona como um “senão”: ele executa quando nenhum case corresponde.

Veja um exemplo com um menu de opções:

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
System.out.println("1 - Atacar");
System.out.println("2 - Curar");
System.out.println("3 - Fugir");
System.out.print("Escolha uma ação: ");
int opcao = scanner.nextInt();
switch (opcao) {
case 1:
System.out.println("Você atacou o inimigo!");
break;
case 2:
System.out.println("Você recuperou parte da sua vida.");
break;
case 3:
System.out.println("Você tentou fugir da batalha.");
break;
default:
System.out.println("Opção inválida!");
break;
}
scanner.close();
}
}
  • Esquecer o break: o programa continua executando os case seguintes, mesmo depois de encontrar o certo.
  • Esquecer o default: opções inválidas ficam sem tratamento.
  • Usar switch para condições compostas: o switch compara um valor por vez, então não serve para condições como vida > 0 && temPocao.

Na prática, if e switch costumam aparecer juntos. O switch escolhe a ação, e o if valida o estado antes ou depois.

Veja um exemplo de menu de combate que usa os dois:

import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int vida = 100;
int pocoes = 2;
System.out.println("1 - Atacar");
System.out.println("2 - Curar");
System.out.print("Escolha uma ação: ");
int opcao = scanner.nextInt();
switch (opcao) {
case 1:
System.out.println("Você atacou o inimigo!");
break;
case 2:
if (pocoes > 0) {
vida = vida + 20;
pocoes = pocoes - 1;
System.out.println("Você se curou. Vida atual: " + vida);
} else {
System.out.println("Você não tem poções!");
}
break;
default:
System.out.println("Opção inválida!");
break;
}
scanner.close();
}
}

Nesse exemplo:

  • o switch decide qual ação executar;
  • o if verifica se ainda há poções antes de curar;
  • o break encerra cada caso.
SituaçãoMelhor escolha
Duas possibilidades (verdadeiro/falso)if/else
Condições compostas (&&, `
Comparar o mesmo valor com várias opções fixasswitch
Menu de opções numeradasswitch