Metodo com retorno!

6 respostas
C

Oi pessoal, estou com problemas…
Então, eu tenho um método que retorna um boolean, porém eu tenho umas verificações para fazer:

Se o valor for “” (vazio) ele entra no if…

E no if tem a verificação se a instancia estado == iniciado, ela retorna false senao true, mas tenho outra verificação também
se o estado for == terminado_antes_iniciado ele retorna false senão true…

No entanto como faço pra verificar essa coisas sem dar o erro unreacheble statemente, que quer dizes que o if que verifica a ultima opção não será verificado…

6 Respostas

W

oi…rola de vc postar o trechinho do codigo ae pra gente da uma olhada??

C
if ( "".equals( param ) ) {
            if ( state.getSessionState() == ScormState.SessionState.RUNNING ){
                  state.setError( ApiError.ALREADY_INITIALIZED );
                  return "false";
            }else {
                state.setError( ApiError.NO_ERROR );
                state.setSessionState( ScormState.SessionState.RUNNING );
                learnerAttempt = DataModelLoader.initializeDataModel( state );
                return "true";
            }  

            if ( state.getSessionState() == ScormState.SessionState.NOT_INITIALIZED ) {
                state.setError( ApiError.TERMINATION_BEFORE_INITIALIZATION );
                return "false";
            }else{
                state.setError( ApiError.NO_ERROR );
                state.setSessionState( ScormState.SessionState.NOT_INITIALIZED );
                learnerAttempt = DataModelLoader.initializeDataModel( state );
                return "true";
            }
        } else {
            state.setError( ApiError.GENERAL_ARGUMENT_ERROR );
            return "false";
        }
A

Tire as aspas"" nos valores logicos true e false

o que voce fez assim

o coreto é

tudo o que estiver entre aspas e entendido como sendo constante literal(String)

W

o q tah acontecendo eh o seguinte:

se o param for igual a “” ele vai entrar no primeiro if, depois ele vai fazer a seguinte comparacao:

if (state.getSessionState() == ScormState.SessionState.RUNNING)

  • se for verdadeiro, ele entra no bloco if e retorna “false”;
  • senao for verdadeiro ele entra no bloco do else e retorna “true”;

e depois disso termina a execucao do seu metodo, ou seja, o trecho de codigo abaixo nunca sera executado:

if ( state.getSessionState() == ScormState.SessionState.NOT_INITIALIZED ) {

state.setError( ApiError.TERMINATION_BEFORE_INITIALIZATION );

return false;

}else{

state.setError( ApiError.NO_ERROR );

state.setSessionState( ScormState.SessionState.NOT_INITIALIZED );

learnerAttempt = DataModelLoader.initializeDataModel( state );

return true;

}
  • otra coisa, vc disse q seu metodo retorna um boolean e esse metodo esta retornando Strings.

espero ter ajudado, qq coisa pode postar ae…

ate mais

C

Desculpa pessoal
Retorna um string mesmo rsrsrsrs…
Como faço pro segundo bloco executar;

S

É isso mesmo. Se entra no if, retorna uma coisa. Se não entra, retorna outra.
E o resto não é executado.

Crie uma variável local boolean bloco1.
Se entrar no if, bloco1 = true, senão bloco1 = false.

Depois você compara com o resultado do segundo.

Criado 19 de maio de 2006
Ultima resposta 19 de mai. de 2006
Respostas 6
Participantes 4