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.