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.

15 comentários:

  1. 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");
    }

    }

    ResponderExcluir
    Respostas
    1. acho que falta cadastrar a variável (resultado)

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

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

    ResponderExcluir
    Respostas
    1. Poderá fazer encadeamento encadeamento if...
      if ( nt >= 7 ){
      System.out.println ("Você foi aprovado!");
      }
      else {
      if ( nt >= 5 ){
      System.out.println ("Você poderá fazer uma recuperação... Boa sorte!");
      } else {
      System.out.println ("Você foi reprovado!");
      }
      }

      Excluir
  3. 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!");
    }
    }
    }

    ResponderExcluir
  4. 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");
    }
    }
    }







    ResponderExcluir
  5. double n1,n2,media;
    Scanner entrada=new Scanner(System.in);
    System.out.println("Qual a primeira nota: \n");
    n1=entrada.nextFloat();
    System.out.println("Qual a segunda nota: \n");
    n2=entrada.nextFloat();
    media=((n1+n2)/2);
    System.out.printf("A media foi: %.3f e a n1:%.2f e n2: %.2f\n", media,n1,n2 );
    if (media>=7){
    System.out.print("Aprovado\n");
    }else if((media>=5) && (media<=6.9)){
    System.out.println("Prova final");
    }
    else{
    System.out.print("Reprovado\n");
    }

    }

    }

    ResponderExcluir
  6. O meu ficou assim!

    /*Crie um programa que receba uma nota e informe se vc passou direto se esta de recuperação ou reprovado
    Regras: 7 ou mais: passou direto, entre 5 e 7 tem direito a recuperação e abaixo de 5 esta reprovado
    */
    import java.util.Scanner;
    public class Exemplo14 {
    public static void main(String[] args){
    Scanner entrada = new Scanner(System.in);
    float nota1, nota2, nota3, media;
    String nome;

    System.out.println("Informe seu nome: ");
    nome = entrada.nextLine();
    System.out.printf("Informe a sua Primeira nota %s : ",nome);
    nota1 = entrada.nextFloat();
    System.out.printf("Informe a sua Segunda nota %s : ", nome);
    nota2 = entrada.nextFloat();
    System.out.printf("Informe agora a sua Terceira nota %s: ", nome);
    nota3 = entrada.nextFloat();

    media = (nota1 + nota2 + nota3)/3;


    if (media >= 7){
    System.out.printf("Você esta Aprovado %s , com Media: %.2f\n", nome, media);
    }
    if (media >= 5 && media < 7){ //uso do && para verificar o intervalo entre os valores.
    System.out.printf("Você consegue %s , você tem direito a recuperação com a media: %.2f\n", nome, media);
    }
    if (media < 5){
    System.out.printf("Poxa não foi desta vez %s , você esta Reprovado com a Media: %.2f\n", nome, media);
    }
    }
    }

    ResponderExcluir
  7. Galera, por favor será que tem como alguém passar isso para Android Studio.
    Agradeço.

    ResponderExcluir
  8. package vcb.foco;


    import java.util.Scanner;

    public class ex006 {
    public static void main(String[] args) {
    Scanner leia = new Scanner(System.in);
    float media ;
    System.out.println("digite a media do aluno :");
    media = leia.nextFloat();
    if (media>7){
    System.out.println("passou direto");
    }
    else if (media>=5&&media<=7){
    System.out.println("tem direito de fazer uma prova de recuperação");
    }
    else {
    System.out.println(" reprovado direto.");
    }

    }
    }

    ResponderExcluir

  9. package aula01;
    //@by kau
    import java.util.Scanner;
    public class Aula01 {


    public static void main(String[] args) {
    AlunoBimestral aluno1 = new AlunoBimestral(); //Instancia de importação de class
    Scanner teclado = new Scanner(System.in); //Instancia de Importação

    System.err.println("|Calculo de média|");
    System.out.println("");
    System.out.print("Informe seu nome: ");
    aluno1.nome = teclado.nextLine();//Instancia para usar o Scanner + variavel
    System.out.print( aluno1.nome + ", Informe sua turma: 1°");
    aluno1.turma = teclado.nextLine();
    System.out.print("RA: ");
    aluno1.ra = teclado.nextInt();

    System.out.println("___________________________________");
    System.out.print("Digite sua nota do 1°Bimestre: ");
    float numero1 = teclado.nextFloat();

    System.out.println("___________________________________");
    System.out.print("Digite sua nota do 2°Bimestre: ");
    float numero2 = teclado.nextFloat();

    System.out.println("____________________________________");
    System.out.print("Digite a nota do 3°Bimestre: ");
    float numero3 = teclado.nextFloat();

    System.out.println("______________________________________");
    System.out.print("Digite a nota do 4°Bimestre: ");
    float numero4 = teclado.nextFloat();

    float média = (numero1 + numero2 + numero3 + numero4) /2; //criação de variavel media do tipo float
    System.out.println("Sua média é: ");
    if(média >= 6){
    System.out.print("Você está aprovado");
    }
    else{
    System.out.print("Você está reprovado");



    OBS: usei uma class par simplificar o código, e não foi necessário criar a variável média porque quando foi calcular automaticamente você criou ela.
    }

    ResponderExcluir
  10. public class Main
    {
    public static void main(String[] args) {

    boolean orgulho = false;

    if (orgulho = true) {

    System.out.println("Você não recebeu Sabedoria");
    }


    if (orgulho = false){

    System.out.println("Você recebeu Sabedoria");

    }
    }

    ResponderExcluir
  11. import java.util.Scanner;

    public class Entrada {

    public static void main(String[] args) {
    Scanner teclado = new Scanner(System.in);
    String nome;
    String sobrenome;
    float nota;

    System.out.print("Digite o nome do aluno: ");
    nome = teclado.nextLine();

    System.out.print("Digite o sobrenome do aluno: ");
    sobrenome = teclado.nextLine();

    System.out.print("Digite a nota do aluno: ");
    nota = teclado.nextFloat();

    if (nota < 0 || nota > 10) {
    System.out.print("Ops! A nota que você informou parece não ser válida. Verifique e tente novamente!");
    } else if (nota >= 7) {
    System.out.printf("A nota do aluno %s %s foi %.2f e ele está aprovado.", nome, sobrenome, nota);
    } else if (nota >= 5 && nota < 7) {
    System.out.printf("A nota do aluno %s %s foi %.2f e ele está de recuperação.", nome, sobrenome, nota);
    } else {
    System.out.printf("A nota do aluno %s %s foi %.2f e ele está reprovado.", nome, sobrenome, nota);
    }
    }
    }

    ResponderExcluir
  12. int nota1, nota2, media;
    Scanner s = new Scanner(System.in);
    System.out.println("Digite a primeira nota: ");
    nota1 = s.nextInt();
    System.out.println("Digite a segunda nota: ");
    nota2 = s.nextInt();
    media = (nota1 + nota2) / 2;
    System.out.println("Sua média é: " + media);
    if (media < 5){
    System.out.println("Você está reprovado! ");
    }if (media < 7){
    System.out.println("Você está de recuperação! ");
    }else{
    System.out.println("Você está aprovado! ");


    }

    }

    }

    ResponderExcluir
  13. import java.util.Scanner;
    public class Aprovado {


    public static void main(String[] args) {
    float nota;
    Scanner entrada = new Scanner(System.in);

    System.out.println("Digite sua nota: ");
    nota = entrada.nextFloat();

    if(nota>7) {
    System.out.println("Você está aprovado");


    }else if (nota >= 5 && nota <=7) {
    System.out.println("Voce tem direito a fazer uma prova de recuperação");
    }else if(nota < 5){
    System.out.println("Você está reprovado");
    }
    }
    }

    ResponderExcluir