Metodo com retorno!

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…

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

[code]
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";
    }[/code]

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)

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

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

É 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.