if e else em Java
Até agora você guardava true ou false, ou montava uma resposta true ou false a partir de duas outras com marcas como &&. Aquelas páginas ainda terminavam com um valor sob um nome. Esta página usa esse valor de outro jeito: o Java olha para true ou false e executa só um grupo de linhas. A ferramenta dessa escolha é if. O outro grupo, quando você precisa, é else.
Um boolean decide qual bloco executa
Crie um arquivo de programa pequeno chamado Gate.java. A public class da primeira linha deve coincidir com o nome do arquivo: public class Gate. Não deixe uma classe Mint antiga neste arquivo; o compilador espera que o nome da classe e o nome do arquivo batam.
Dentro de main, guarde um boolean antes de escolher um caminho:
boolean ready = true;
Essa linha não escreve nada. Só dá ao nome ready a palavra true. ready começa com r minúsculo. Não há aspas em volta de true. O ponto e vírgula termina a linha de guarda. Depois vem a escolha em si:
if (ready) {
System.out.println("pass");
} else {
System.out.println("wait");
}
A palavra if é minúscula: i, depois f. Não é um nome que você inventa. Um espaço depois de if está certo; if(ready) sem espaço também compila. Dentro dos parênteses fica o nome ready — sem aspas, sem ==, sem &&. Quando ready guarda true, o Java entra no primeiro par de chaves e executa System.out.println("pass");. As aspas em volta de pass marcam letras para a tela. Essas letras — p, a, s, s — são o que você deve ver, uma linha. O bloco else é ignorado por completo nesta execução. Salve o arquivo antes de compilar.
Programa que escreve pass
Esta é a versão que você compila primeiro.
public class Gate {
public static void main(String[] args) {
boolean ready = true;
if (ready) {
System.out.println("pass");
} else {
System.out.println("wait");
}
}
}
Na pasta que contém Gate.java, execute javac Gate.java. Quando as chaves e os parênteses batem, o javac não escreve nenhuma linha por conta própria. Depois execute java Gate — não java Gate.java. Tire o final .java do segundo comando. Os mesmos dois comandos funcionam no Windows e no macOS; esta página não depende de uma ortografia de shell diferente para nenhum dos sistemas. O programa deve escrever pass e parar. Não deve esperar você digitar. Se o terminal ficar esperando entrada do teclado, uma chamada nextLine de um exercício antigo ainda está no arquivo. Apague essa chamada e mantenha o boolean mais o if / else acima. Você não precisa de uma nova instalação do JDK por causa de uma linha errada na tela.
Por que pass e não wait? Porque o teste entre parênteses era true. O Java não escreve a palavra true nesta execução. Ele escreve o que o println executa dentro das chaves escolhidas. Pense em três papéis: os parênteses seguram o teste, as chaves agrupam as linhas que vão juntas, e o println é a única parte que escreve na tela. Se a tela mostrar true, você provavelmente ainda está imprimindo o próprio boolean, ou uma demo antiga de marcas de combinação ainda está em main. Troque essa linha de escrita por println("pass") dentro das chaves if quando ready for true.
Quando ready é false
Mude só o valor guardado:
boolean ready = false;
Deixe a estrutura if / else como está. Agora o teste falha, então o Java pula as primeiras chaves e executa as chaves else. A tela deve mostrar wait, uma linha.
public class Gate {
public static void main(String[] args) {
boolean ready = false;
if (ready) {
System.out.println("pass");
} else {
System.out.println("wait");
}
}
}
Compile e execute de novo: javac Gate.java, depois java Gate. Você deve ver wait. Note que você não reescreveu a linha if nem a linha else — só o valor sob ready mudou. Depois de ver wait, você pode colocar boolean ready = true; de volta para voltar à primeira demo. As duas versões são Java válido. Elas ensinam a mesma forma if / else com testes opostos.
Leia a execução false mais uma vez na ordem. ready guarda false. if (ready) é perguntado. A resposta é false, então cada linha entre o primeiro { e o } correspondente é pulada — inclusive println("pass"). O controle continua em else. As linhas entre as chaves else executam, então println("wait") roda. Uma linha na tela. Sem segunda linha. A palavra false em si nunca aparece a menos que você a imprima de propósito.
Regras que mantêm a escolha clara
Os parênteses em volta do teste são obrigatórios. Escrever if ready { … } sem parênteses faz o javac falhar. O teste desta página é um boolean: um nome como ready, ou as palavras nuas true ou false sem aspas. if ("true") coloca letras onde um teste boolean deveria estar; o javac reporta um erro. Tire as aspas, ou continue usando um nome boolean. Um número inteiro sozinho como if (1) não é o jeito desta aula de guardar prontidão; fique com true, false ou um nome boolean.
As chaves importam para ler a aula. Esta página sempre envolve cada caminho em { }. O Java permite um if de uma linha sem chaves, mas no momento em que você adiciona uma segunda linha sob esse if, só a primeira linha continua ligada ao teste a menos que haja chaves. Iniciantes perdem esse detalhe com facilidade. Mantenha chaves nas duas demos para que cada caminho fique óbvio: uma chave de abertura depois do teste, uma de fechamento antes de else, depois outro par para else.
else pertence a um if. Um else sozinho faz o javac falhar. Nesta página um if tem um else. Você pode escrever if sem else quando só se importa com o caminho true; a primeira demo de ensino ainda mostra os dois lados para você ver a bifurcação. Escolher entre vários valores fixos é switch numa página depois — não invente um terceiro ramo com outro else aqui.
Você também pode escrever o teste sem um nome separado: if (true) { … } else { … }. Isso compila e executa. As demos usam ready para você ver um boolean guardado dirigindo a escolha, que é como os programas ficam depois que você já sabe guardar true e false. Comparações como if (score > 10) vêm depois que você está confortável com esta bifurcação true / false; esta página mantém o teste como um valor boolean que você já entende.
📊 ready e a tela
| ready | Tela |
|---|---|
| true | pass |
| false | wait |
Use a tabela como checagem depois de uma execução, não no lugar dela. true com a primeira demo escreve pass. false com a segunda demo escreve wait. Se as duas linhas println executarem de algum jeito, as chaves ou o pareamento if / else estão errados — conserte a estrutura em vez de reinstalar o Java.
Uma confusão comum é imprimir a própria sintaxe: System.out.println("if (ready)");. Isso escreve os caracteres if (ready). Não escolhe um caminho. Outra confusão é deixar demos de && ou == no mesmo main e se perguntar por que a tela mostra true em vez de pass. O main desta sessão deve guardar só o boolean e o if / else.
O que você pode fazer agora
Você pode guardar um boolean, colocá-lo em if (…), e dar a cada resultado o seu próprio bloco com chaves. Quando o teste é true, um println executa; quando é false, o println do else executa. A próxima página é switch, onde vários valores fixos têm cada um o seu case em vez de uma única bifurcação true / false.
🧠 Teste Seu Conhecimento
Teste Seu Conhecimento
Desafie-se com este questionário interativo e veja o quão bem você entende o tópico
📝 Instruções
- Leia cada pergunta cuidadosamente
- Selecione a melhor resposta para cada pergunta
- Você pode refazer o quiz quantas vezes quiser
- Seu progresso será mostrado no topo