1. Operador if else
De pouco adiantaria programas fazerem sempre a mesma coisa, independentemente de como mudam as circunstâncias externas. Um programa precisa se adaptar a diferentes situações e fazer uma ação em alguns casos e outra em outros.
Em Java isso é implementado com o operador condicional — as palavras-chave if e else, que permitem executar diferentes blocos de comandos dependendo da veracidade da condição.
O operador condicional consiste em três partes: condição, comando 1 e comando 2. Se a condição for verdadeira, executa-se o comando 1; caso contrário, executa-se o comando 2. Os comandos nunca são executados simultaneamente. A forma geral desse operador é a seguinte:
if (condição)
comando1;
else
comando2;
if-else
if significa “se”, e else significa “caso contrário”. Em linguagem humana, isso pode ser escrito assim:
Se a condição for verdadeira, então
executar comando1;
senão
executar comando2;
if-else em linguagem humana
Exemplos:
// Será exibida a mensagem: Você ainda é criança
int age = 17;
if (age < 18)
System.out.println("Você ainda é criança");
else
System.out.println("Você já é adulto");
// Será exibida a mensagem: Está quente
int temperature = 5;
if (temperature < 0)
System.out.println("Está muito frio lá fora");
else
System.out.println("Está quente");
// Será exibida a mensagem: Você pode tirar a carteira de motorista
int age = 18;
if (age == 18)
System.out.println("Você pode tirar a carteira de motorista");
else
System.out.println("Você pode juntar dinheiro para o carro");
2. Bloco de comandos
Se, quando a condição for satisfeita (ou não), você quiser que seu programa execute vários comandos, pode agrupá-los em um bloco de comandos.
Para agrupar comandos em um bloco, “envolva-os” entre chaves. Eis como isso fica no caso geral:
{
comando1;
comando2;
comando3;
}
O número de comandos em um bloco pode ser qualquer um — inclusive zero.
Exemplos de combinação do operador if-else com bloco de comandos:
// Será exibida a mensagem: Você ainda é criança. Não discuta com os adultos
int age = 17;
if (age < 18)
{
System.out.println("Você ainda é criança");
System.out.println("Não discuta com os adultos");
}
else
{
System.out.println("Você já é adulto");
System.out.println("Ah, essa juventude...");
}
// Será exibida a mensagem: Está quente
int temperature = 5;
if (temperature < 0)
{
System.out.println("Está muito frio lá fora");
System.out.println("Coloque um gorro");
}
else
System.out.println("Está quente");
// Um bloco de comandos vazio será executado. Nada será impresso na tela.
int age = 21;
if (age == 18)
System.out.println("Você pode obter a carteira de motorista");
else
{
}
3. Sintaxe reduzida do operador if
Se o código no bloco else estiver ausente, você pode omiti-lo. Então o operador if ficará assim:
if (condição)
{
comando1;
}
if
Exemplo:
int age = 19;
if (age >= 18)
{
System.out.println("Você é maior de idade!");
}
Como isso funciona?
Se a condição for verdadeira, o bloco de código é executado. Se for falsa, nada acontece — o programa segue adiante.
O bloco else até pode existir no programa, mas estar vazio (entre as chaves não há comandos). Você pode simplesmente removê-lo: nada mudará no programa.
4. Combinando condições: else if
Às vezes é preciso verificar mais do que “sim/não” e escolher entre várias opções. Para isso, usamos a combinação else if:
if (condição1)
{
// Executa se condição1 for verdadeira
}
else if (condição2)
{
// Executa se condição2 for verdadeira e condição1 for falsa
}
else
{
// Executa se nenhuma das condições acima for atendida
}
Exemplo:
int hour = 13;
if (hour < 12)
{
System.out.println("Bom dia!");
}
else if (hour < 18)
{
System.out.println("Boa tarde!");
}
else
{
System.out.println("Boa noite!");
}
O que está acontecendo aqui?
- Se for antes das 12 — é manhã.
- Se for das 12 às 18 — é tarde.
- Se for depois disso — é noite.
- O programa escolhe APENAS UMA das opções! Assim que uma condição é satisfeita — as restantes nem são verificadas.
5. Ilustração esquemática: fluxograma de ramificação
Veja como isso fica em um fluxograma:
E se houver várias condições:
Isso lembra muito as bifurcações em jogos de RPG de mesa: vai para a esquerda — acontece uma coisa; para a direita — outra; em frente — mais outra!
6. Que condições podem ser verificadas?
Dentro dos parênteses após if deve haver uma expressão lógica — cujo resultado é true ou false.
Principais operadores de comparação:
| Operador | Significado | Exemplo |
|---|---|---|
|
Igual a | |
|
Diferente de | |
|
Maior que | |
|
Menor que | |
|
Maior ou igual a | |
|
Menor ou igual a | |
Exemplos de condições:
if (number == 10)
if (age != 18)
if (temperature > 36)
if (balance <= 0)
Observe: = (um sinal) — é atribuição. == (dois sinais) — é comparação. Esse é um dos erros mais comuns entre iniciantes! Se você, sem querer, escrever:
if (x = 5) // ERRO!
— o compilador irá reclamar, e com toda razão.
7. Trabalhando com strings em condições
A comparação com == em Java funciona corretamente para números inteiros. Para números de ponto flutuante, não é recomendado usar ==, e para strings não se deve usar == — para strings, use o método equals(), que compara o conteúdo das strings (e não as referências).
Falaremos mais sobre as sutilezas da comparação de strings depois. E como comparar strings corretamente — veja no exemplo abaixo:
String password = console.nextLine();
if (password.equals("qwerty")) // chamamos o método equals() e passamos a segunda string para ele
{
System.out.println("Você entrou!");
}
8. Particularidades e nuances:
Chaves: necessárias ou não?
Se após if ou else houver apenas um comando, as chaves podem ser omitidas:
if (age > 18)
System.out.println("Você tem mais de 18!");
// Mas é mais seguro SEMPRE escrevê-las:
if (age > 18)
{
System.out.println("Você tem mais de 18!");
}
Dica: escreva sempre com chaves. Isso evita muitos erros, especialmente ao expandir o código.
Erros lógicos: cuidado com as condições!
Se você escrever assim:
if (age > 18)
System.out.println("Você tem mais de 18!");
System.out.println("Bem-vindo!");
O compilador interpretará este código assim:
if (age > 18)
{
System.out.println("Você tem mais de 18!");
}
System.out.println("Bem-vindo!");
A segunda linha sempre será executada — as chaves são necessárias para que ambas as linhas fiquem dentro do “ramo”.
GO TO FULL VERSION