Como usar IF e ELSE: Testando e Escolhendo o que executar

Até agora na apostia Java Progressivo, nossos códigos foram procedurais. Ou seja, seguiram um ordem de execução: do começo ao fim, executando tudo.

Mas executamos tudo, sempre que usamos um programa?
Claro que não, escolhemos. Fazemos opções.

É isso o que o if else faz, nos permite optar por executar determinadas coisas.

Como usar o IF em Java

Em inglês quer dizer 'se'.
A sintaxe é:

if ( condição ){
    caso a condição seja verdadeira
    esse bloco de código será executado
}

E se não for verdade?
Não executa, ué.

Vamos testar a condição ' 1 é igual a 2?', que obviamente retornará 'false' e depois testar se 1 é igual 1.
Mas isso é em nossa língua. Como perguntamos isso pro computador?
Assim: if(1 == 2)
e depois: if(1 == 1)

Veja bem, é 1 == 2, e não 1 = 2.
1 == 2 é uma comparação, é uma pergunta, ela retorna um valor lógico!
Aqui que está a chave, só podemos colocar no if o que retorna valor lógico.

1 = 2 é uma atribuição de valores simplesmente!

Vamos aos códigos:
public class Ifelse {
    public static void main(String[] args) {
        if (1 == 2){
            System.out.println("Você nunca lerá essa mensagem, mwahuahuauha");
        }
       
        if (1 == 1){
            System.out.println("1 é igual a 1? Jura? ");
        }
    }
}

Como usar ELSE em Java

Do inglês: senão

O else só vem acompanhado do if, e ele só ocorre quando a condição do if é falsa.
A sintaxe é a seguinte:


if ( condição ){
    caso a condição seja verdadeira
    esse bloco de código será executado
} else {
    caso a condição seja falsa
    esse bloco de código que será executado
}


O else não recebe condição. Ele executa quando o if não executa.

Ou seja:
if (verdade)
faz isso
else
faz isso

Aprender if else não é aprender pro Java, é aprender para todas as outras linguagens.
Aliás, é aprender lógica. É matemática, é raciocínio.
Essa mesma base lógica é extremamente usada em Engenharia (Elétrica, Eletrônica, Telecomunicações), em Física, Matemática Discreta, todo tipo de Ciência, em chips, no Kernel dos Sistemas Operacionais, nos aviões e em tudo que envolver lógica e mundo digital.

Mas vamos fazer algo útil:

Problema: Crie um programa que recebe uma nota ( pela classe Scanner) e checa se você passou direto, ficou de recuperação ou foi reprovado na matéria, e exiba tal mensagem:
A regra é a seguinte:
Nota 7 ou mais: passou direto
Entre 5 e 7: tem direito de fazer uma prova de recuperação
Abaixo de 5: reprovado direto.


É importante que tente. Mesmo que não consiga ou consiga só uma parte do problema.
É assim que se evolui. Tentando..já passei minutos em alguns problemas, horas, dias em outros...alguns eu nem sabia por onde começar e corri pra ver a solução. Outros eu acordo de madrugada tendo uma ideia de como resolver.

Pelo menos pense, e clique aqui pra ver o seu desenvolvimento completo.

5 comentários:

marvin disse...

acho que o resultado nao esta dando certo

package pkgif.pkgelse;
import java.util.Scanner;
public class IfElse {
public static void main(String[] args) {
//entradas
float nota1; float nota2; float nota3; float nota4;
Scanner entrada= new Scanner (System.in);
System.out.println("digite sua 1° nota");
nota1 = entrada.nextFloat();
System.out.println("digite sua 2° nota");
nota2 = entrada.nextFloat();
System.out.println("digite sua 3° nota");
nota3 = entrada.nextFloat();
System.out.println("digite sua 4° nota");
nota4 = entrada.nextFloat();
//calculos e comparaçoes
System.out.print(nota1 + nota2 + nota3 + nota4 /4);
float resultado;
resultado = (nota1 + nota2 +nota3 + nota4 /4);
if(resultado>=7); System.out.println(" aprovado");
if(resultado<5); System.out.println(" reprovado");
}

}

Anônimo disse...

acho que falta cadastrar a variável (resultado)

Unknown disse...

O final está errado, você colocou 2 if.
O certo seria assim:

if (resultado >= 7) {
System.out.println("Aprovado");
{ else {
System.out.println("Reprovado");
}

Renato nogueira disse...

package media;
import java.text.DecimalFormat;
import java.util.Scanner;

/**
*
* @author rnt
*/
public class Media {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

Scanner entrada = new Scanner (System.in);
// importei essa classe chamada "java.text.DecimalFormat" ela transforma meu resultado com numero de casas decimais que eu decidir
// neste exemplo quero que a media tenha somente duas casa decimais.
DecimalFormat dc = new DecimalFormat("0.00");
//minhas variaveis usei as que uso aqui na faculdade são tres notas.
float nota1;
float nota2;
float nota3;
//eu coloquei como variavel a media
float media;
// coloquei essa variavel para saber o resultado da soma das notas incialmente. claro isso é so para organização e minha maneira de pensar
float SomaNota;


//metodo recebendo os dados do usuario
System.out.println("Digite sua primeira nota ");
nota1 = entrada.nextFloat();
System.out.println("Digite sua segunda nota ");
nota2 = entrada.nextFloat();
System.out.println("Digite sua terceira nota ");
nota3 = entrada.nextFloat();
//metodo para somar as notas
SomaNota= nota1+nota2+nota3;
//metodo para saber a media, a media é o valor da soma do meu metodo acima, dividido pela quantidade de notas, neste exemplo 3 notas;
media= SomaNota/3;


//metodo de comparação
if(media<5){
System.out.println("a sua media é:"+dc.format(media)+" e deu merda, voce precisa estudar mais, até ano que vem");
}
if(media>=5 && media <7 ){
System.out.println("a sua media é:"+dc.format(media)+" e voce por pouco não passou, precisa estudar para a substitutiva");
}
if(media>=7 ){
System.out.println("a sua media é:"+dc.format(media)+" Parabéns! Pode colocar as séries em dias, você passou!");
}
}
}

Renato nogueira disse...

ola fiz um programa com base nos conhecimentos até aqui, de comparação de media com 3 notas, usando if, else, usando tratamento de nota digitada, fique a vontade para entender o código e fazer o seu tambem.

sou iniciante, e quebrei muita cabeça, mas é incrível quando copila e dá certo. sou noob como vocês, então vamos se ajudar.

segue o código.

package media;
import java.text.DecimalFormat;
import java.util.Scanner;

/**
*
* @author rnt
*/
public class Media {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here

Scanner entrada = new Scanner (System.in);
// importei essa classe chamada "java.text.DecimalFormat" ela transforma meu resultado com numero de casas decimais que eu decidir
// neste exemplo quero que a media tenha somente duas casa decimais.
DecimalFormat dc = new DecimalFormat("0.00");
//minhas variaveis usei as que uso aqui na faculdade são tres notas.
float nota1;
float nota2;
float nota3;
//eu coloquei como variavel a media
float media;
// coloquei essa variavel para saber o resultado da soma das notas incialmente. claro isso é so para organização e minha maneira de pensar
float SomaNota;


//metodo recebendo os dados do usuario

System.out.println("Digite sua primeira (0.0 - 10.0) ");
nota1 = entrada.nextFloat();

//metodo para validação das notas inseridas
if((nota1<=10.0)&&(nota1 >=0.0)){
System.out.println("Digite sua segunda nota (0.0 - 10.0) ");
nota2 = entrada.nextFloat();
if((nota2<=10.0)&&(nota2 >=0.0)){
System.out.println("Digite sua terceira nota (0.0 - 10.0) ");
nota3 = entrada.nextFloat();
if((nota3<=10.0)&&(nota3 >=0.0))
{
//metodo para somar as notas
SomaNota= nota1+nota2+nota3;
//metodo para saber a media, a media é o valor da soma do meu metodo acima, dividido pela quantidade de notas, neste exemplo 3 notas;
media= SomaNota/3;
//metodo de comparação
if(media<5){
System.out.println("a sua media é:"+dc.format(media)+" e deu merda, voce precisa estudar mais, até ano que vem.");
}
if(media>=5 && media <7 ){
System.out.println("a sua media é:"+dc.format(media)+" e voce por pouco não passou, precisa estudar para a substitutiva");
}
if(media>=7 ){
System.out.println("a sua media é:"+dc.format(media)+" Parabéns! Pode colocar as séries em dias, você passou!");
}

}else{System.out.println("nota inválida, encerrando a aplicação");}


}else{
System.out.println("nota inválida, encerrando a aplicação");
}
} else{System.out.println("nota inválida, encerrando a aplicação");
}
}
}







Tutoriais de Java

Como Ganhar na Lotofácil