4 Condicionais
Transformar regras em decisões previsíveis
4.1 Objetivos de aprendizagem
Ao concluir este capítulo, você deverá ser capaz de:
- escrever decisões com
if,else ifeelse; - combinar condições com operadores relacionais e lógicos;
- escolher entre
ifeswitch; - comparar comandos de texto sem depender de maiúsculas ou espaços.
4.2 Expressões booleanas
Uma condição produz true ou false. Os operadores relacionais são ==, !=, >, <, >= e <=. Os operadores lógicos mais usados são && (E), || (OU) e ! (NÃO).
Use parênteses quando eles tornarem a intenção mais clara, mesmo que a precedência da linguagem já produza o resultado correto.
4.3 Decisões com if
A ordem importa: condições mais específicas devem aparecer antes de condições mais abrangentes.
4.4 Opções fechadas com switch
Use switch quando uma única expressão é comparada com um conjunto pequeno de valores fixos. Use if para intervalos, combinações e regras diferentes entre si.
import java.util.Locale;
public class Capitulo03Condicionais {
public static String responder(String entrada) {
String comando = entrada.strip().toLowerCase(Locale.ROOT);
return switch (comando) {
case "oi" -> "Olá! Como posso ajudar?";
case "ajuda" -> "Comandos: oi, dica e sair.";
case "dica" -> "Use nomes que revelem a intenção.";
case "sair" -> "Até logo!";
default -> "Não entendi. Digite ajuda.";
};
}
public static void main(String[] args) {
System.out.println(responder(" AJUDA "));
}
}Locale.ROOT torna a normalização previsível, independentemente do idioma configurado no computador.
4.5 Erros frequentes
- comparar
Stringcom==; - repetir a mesma condição em vários pontos;
- escrever uma condição que nunca pode ser verdadeira;
- criar muitos níveis de
ifaninhados; - não prever entrada vazia ou desconhecida.
Quando uma decisão crescer demais, extraia-a para um método com nome claro.
4.6 Evolução do projeto: versão 3
O chatbot agora reconhece oi, ajuda, dica e sair. A resposta padrão orienta a pessoa em vez de apenas informar erro.
O exemplo completo está em examples/src/Capitulo03Condicionais.java.
4.7 Prática verificável
Adicione o comando sobre e escreva uma regra que classifique horas de estudo:
- menos de 3 horas: “ritmo inicial”;
- de 3 a 6 horas: “ritmo consistente”;
- acima de 6 horas: “ritmo intensivo”.
Casos de teste:
| Entrada | Resultado esperado |
|---|---|
AJUDA |
lista de comandos |
dica |
dica de Java |
desconhecido |
orientação para digitar ajuda |
3 horas |
ritmo consistente |
Explique por que switch foi usado para comandos e if para intervalos de horas.