Controle de Fluxo , exceções e assertivas

3 respostas
Marcio_Duran

:?: Bom, o codigo abaixo falha, todavia se alterar a posição dos If e Else recebo um determinado valor.Porém o Calculo da resposta só finaliza-se de depois que eu retorno o valor Int de Alfa ? , ou já tenho isso depois de todas as comporações booleanas.

public class InterfaceServidor{ public int superComputer(int Alfa) { int gama=1; gama +=Alfa; if((Alfa >4) &&(Alfa<10)){ gama+=2*Alfa; }else (Alfa<=4){ gama+=3*Alfa; }else{ gama+=4*Alfa; } gama +=5*Alfa; return gama; } public static void main(String [] args){ InterfaceServidor o=new InterfaceServidor(); System.out.println("Generation(11) is:"+o.superComputer(11)); } }

3 Respostas

peczenyj
public class Z{
        public int superComputer(int Alfa) {
                int gama=1;
                gama += Alfa;

                if((Alfa >4) &&(Alfa<10)){
                        gama+=2*Alfa;
                }else if(Alfa<=4){ /* tava faltando um IF aqui ! */
                        gama+=3*Alfa;
                }else{
                        gama+=4*Alfa;
                }
                gama +=5*Alfa;
                return gama;
        }
        public static void main(String [] args){
                Z o=new Z();
                for(int i=0;i<12;i++)
                        System.out.println("Generation("+i+") is:"+o.superComputer(i)); 
        }
}

Retorna isso:
Generation(0) is:1
Generation(1) is:10
Generation(2) is:19
Generation(3) is:28
Generation(4) is:37
Generation(5) is:41
Generation(6) is:49
Generation(7) is:57
Generation(8) is:65
Generation(9) is:73
Generation(10) is:101
Generation(11) is:111

É o esperado?

U

Em relação a sintaxe, o erro está no seu primeiro “else”.
O operador ELSE é equivalente ao SENÃO em pseudo-código, ou seja, se nenhuma das condições do SE (IF) forem atendidas o bloco que ele delimita será executado.
O que vc pretende é fazer é um SENÃO SE, correto?! Use ELSE IF:

if ( <condicao> ) {
  
} else if (<outraCondica>) {
  
} else {

}

Em relação a lógica, não entendo que seu código faz! hehe
De qqr forma, note que a linha “gama += 5*Alfa” sempre será executada!

t+

Marcio_Duran

peczenyj:

É o esperado?

O if-else-else deve ser modificado para if-else if-else já resultaria em 111.

Todavia porque você implementou um contador ?

Z o=new Z();  
 for(int i=0;i<12;i++)

Outra pergunta, você não pensou no objeto que retornou a classe e as variáveis que estavam recebendo os valores na comparação pelos os operando, e alterou a regra do código.

Você mundou o problema, mas não respondeu a pergunta de como o processamento se deu.

Porém o Calculo da resposta só finaliza-se de depois que eu retorno o valor Int de Alfa ? , ou já tenho isso depois de todas as comporações booleanas.

Criado 18 de março de 2008
Ultima resposta 18 de mar. de 2008
Respostas 3
Participantes 3