Else if

gente uma duvida que eu tenho do basico do basico do java :?
eu entendo o funcionamento do else if perfeitamente, o else vai rodar quando o if não eh verdadeiro…
mas eu não sei como funciona o comando “else if”
abraço

1 curtida

Eae nipo_style

Depende de como esta no if, exemplo:

boolean s = true; if(!s) // se s nao for true exibe o syso abaixo. {System.out.println("s do 1o if é " + s);} else if (s) // se o s for true exibe o syso abaixo {System.out.println("s do 2o if é " + s);}

Se satisfazer a condicao do primeiro if o segundo nao será executado(verificado) por que é um else do primeiro if.

nipo_style, é moleza cara. Vamos tratar isso como um algoritmo para você entender:

Se (x = 2), faça:
    Imprime "Número 2"
senão, faça:
    se (x = 3), faça:
        Imprime "Número 3"
    senão, faça:
        Imprime "Número Inválido"
    fim
fim

É só uma forma de você tratar diversas condições somente quando determinada afirmação for falsa ou vice-versa.

Abraços

entao qual a diferença de vc usar um “if” e depois um “else”, ou usar um “if” e depois um “else if”?
agradeço, abraço

Nenhuma, o que você tem que entender é o fluxo de decisões. É melhor explicar isso com um exemplo. Tenha esse código:

if(escolha==1){ // escolha foi 1 }else if(escolha==2){ // escolha foi 2 else{ // sem escolha }
Ele se desenvolve como:

if(escolha==1){ //escolha foi 1 else{ if(escolha==2){ // escolha foi 2 }else{ // sem escolha } }
Else if é um encurtamento para vários if/else encadeados.

Até!

Cara o else eh opcional assim como o else if, isso vai depender de sua regra de negocio.

Mas vc só vai usar um else if caso queira fazer outro teste caso o if anterior nao satisfaca sua condicao.

[code]int idade = 17;
String sexo = “h”;

        if(idade >= 18){
        	System.out.println("idade menor que 18");
        }else if(sexo == "f"){ // apenas colocando um if dentro de um else
        	System.out.println("sexo diferente de h");
        }else{ // esse else é do segundo if
        	System.out.println("idade > 18 e sexo h");
        }
     [/code]

Usando o mesmo codigo assim sem o else do primeiro if.

[code]int idade = 17;
String sexo = “h”;

        if(idade >= 18){
        	System.out.println("idade menor que 18");
        }if(sexo == "f"){ /* apenas colocando um if depois da condicao verdadeira do primeiro if, pois soh se for falso ele pulará {System.out.println("idade menor que 18");} e executará a linha posterior.*/
        	System.out.println("sexo diferente de h");
        }else{ // esse else é do segundo if
        	System.out.println("idade > 18 e sexo h");
        }
     [/code]

Acho que a dúvida dele é:

Qual a diferença de usar:

if (n ==1)
faça…
if (n ==2)
faça…

ou usar

if (n ==1)
faça…
else if (n ==2)
faça…

Correto??

veja… no segundo exemplo, o segundo IF será validado APENAS quando a primeira afirmação for falsa. Em alguns casos você quer validar o segundo IF mesmo que o primeiro IF seja verdadeiro, daí você utiliza o primeiro exemplo.

Ficou mais claro??? Isso não é linguagem JAVA, isso é lógica de programação.

Abraços

Exemplo com n = 2

if (n == 1){ // realiza esta comparação
   ...
}

if (n == 2){ //depois realiza esta comparação
   ...
}

if (n == 3){ //realiza esta comparação também
   ...
}

if (n == 4){ //e realiza mais esta comparação
   ...
}

ou usar

if (n == 1){ //realiza esta comparação
   ...
}else
   if (n == 2){ //caso a anterior seja falsa, realiza esta comparação [é o nosso caso]
      ...
   }else
      if (n == 3){ //caso a anterior seja falsa, realiza esta comparação [não é o nosso caso]
         ...
      }else
         if (n == 4){ //caso a anterior seja falsa, realiza esta comparação [não é o nosso caso]
            ...
         }

No primeiro modo ele testará todos as condições, no segundo caso testará as condições até que encontre a condição correta.

Não tem segredo nenhum…
São simples condições:

Quando a condição que estiver dentro do “if” for verdadeira, ela executa e o else não.
Quando a codição que estiver denrtro do “if” for falsa, ela não executa e é executado o comando dentro do “else”.

olha só:

int x = 1;

if(x==1)
    System.out.println("X é igual a 1");
else
    System.out.println("X é diferente de 1");

Entendeu?

Entendi galera valeu ai! :smiley:
abraço

ainda aproveitando o topico, quantos if /else eu posso colocar em um método?
no meu caso eu tentei usar:

if (nome != null) { System.out.println("leu primeira condição"); return nome; } if (cpf != null) { System.out.println("leu segunda condição"); return cpf; } if (rg != null) { System.out.println("leu terceira condição"); return rg; } if (og != null) { System.out.println("leu quarta condição"); return og; }

mas só a primeira condicao é lida…

alguem pode ajudar?

é pq vc se esqueceu do else

if (nome != null) { System.out.println("leu primeira condição"); return nome; } else if (cpf != null) { System.out.println("leu segunda condição"); return cpf; } else if (rg != null) { System.out.println("leu terceira condição"); return rg; } else if (og != null) { System.out.println("leu quarta condição"); return og; }

[quote=Scoobydoo]é pq vc se esqueceu do else

if (nome != null) { System.out.println("leu primeira condição"); return nome; } else if (cpf != null) { System.out.println("leu segunda condição"); return cpf; } else if (rg != null) { System.out.println("leu terceira condição"); return rg; } else if (og != null) { System.out.println("leu quarta condição"); return og; } [/quote]

Blz. mas dessa forma eu posso usar qualquer uma das 4 condicoes ou algumas simultaneamente, ou somente uma delas?

[quote=Kleber-rr]ainda aproveitando o topico, quantos if /else eu posso colocar em um método?
no meu caso eu tentei usar:

if (nome != null) { System.out.println("leu primeira condição"); return nome; } if (cpf != null) { System.out.println("leu segunda condição"); return cpf; } if (rg != null) { System.out.println("leu terceira condição"); return rg; } if (og != null) { System.out.println("leu quarta condição"); return og; }

mas só a primeira condicao é lida…

alguem pode ajudar?[/quote]

Não esqueça que no return, ele irá sair do método.