🧩 Exercícios - Cap 05: Decisões e Ranks (if/when)
🎯 Antes de começar
No Cap 05 você criou o “Juiz de Rank” com when (nivel) { in 1..10 -> "Bronze" ... } e, nas Práticas Obrigatórias, usou if/else (GAME OVER) e when comparando String (classe do personagem). Depois de completar as duas Práticas, faça o exercício extra abaixo para conhecer o when sem argumento — uma forma de organizar várias condições, como uma cadeia de if/else if.
💪 Exercício Extra 1: Bônus de Combo com when sem Argumento (15 min)
Objetivo: Praticar when { condição -> resultado } (sem when (variavel)), entendendo que ele funciona como uma cadeia de if/else if/else.
Passos:
- No Kotlin Playground, crie
val combo: Int = 7. - Use um
whensem argumento para decidir a mensagem de bônus:val mensagem = when { combo >= 10 -> "Combo Lendário! +50% de dano" combo >= 5 -> "Combo Bom! +20% de dano" else -> "Sem bônus de combo" } println(mensagem) - Teste trocando
combopara12, depois para2, rodando de novo a cada troca.
✅ Resultado Esperado
combo = 7→"Combo Bom! +20% de dano"combo = 12→"Combo Lendário! +50% de dano"combo = 2→"Sem bônus de combo"
🆘 Resolução de Problemas Comuns
| Erro | Causa | Solução |
|---|---|---|
combo = 12 mostra "Combo Bom!" em vez de "Combo Lendário!" |
A condição combo >= 5 foi colocada antes de combo >= 10 — o when para na primeira condição verdadeira |
Sempre coloque a condição mais específica/restritiva primeiro (>= 10 antes de >= 5) |
Erro de compilação 'when' expression must be exhaustive |
Faltou o else -> no when usado como expressão (atribuído a val mensagem) |
Sempre inclua um else -> quando o when é usado para gerar um valor |
Erro de sintaxe perto de -> |
Usou = ou : em vez de -> entre a condição e o resultado |
A seta -> é obrigatória em cada ramo do when |