0

我有这个字符串:"no_questions_by_user"在一个名为 result 的变量中。

比我做这个检查:

if ( result != null && result.equals( "no_user_id" ) )
{
        Log.d( "Post execute: " , "NOOOT  OKKKK - no user id" );    
}
else
if ( result != null && result.equals( "database_error" ) )
{
        Log.d( "Post execute: " , "NOOOT  OKKKK - database error" );    
}
else
if ( result != null && result.equals( "no_questions_by_user" ) )
{           
        Log.d( "Post execute: " , "NOOOT  OKKKK - no questions by user so far" );   
}
else
{
  Log.d( "MyQuestionsActivity" , "In JSON parsing area.." );                
}

它总是到最后一个。但据我了解,它应该真正进入检查的块result.equals( "no_questions_by_user" )

知道为什么该块没有被执行吗?

谢谢!!

4

6 回答 6

5

代码看起来不错。您的变量result必须有另一个值。

我的猜测是结果字符串的末尾或开头有一些空格。

于 2012-04-12T12:15:27.237 回答
5

就个人而言,我认为这段代码是一团糟。

我会编写一种方法来获取结果并在地图中查找消息。所有那些如果测试让我的眼睛流血:

private static final Map<String, String> LOG_MESSAGE_MAP;

static {
    LOG_MESSAGE_MAP = new HashMap<String, String>();
    // put all your result, message pairs in here
}

public void logResultDependentMessage(String result) {
    log.debug(LOG_MESSAGE_MAP.get(result));
}

现在添加新结果,消息对仅意味着插入到地图中。如果您使用的是 Spring 之类的东西,您可以在配置中进行配置,而无需触及代码。

于 2012-04-12T12:27:50.240 回答
4

尝试:

result.trim().equals( "no_questions_by_user" )
于 2012-04-12T12:16:42.113 回答
3

您在调试器中看到“no_questions_by_user”了吗?

您可以尝试在测试之前对其进行修剪,因为在调试器中很难检测到空格。

于 2012-04-12T12:15:52.093 回答
1

确保“结果”变量的值中没有空格。在输入 if 语句之前,您可以像这样打印一行。

System.out.println("The Value of result variable is=\"" + result + "\"");

你不妨这样做

if ( result != null && result.trim().equals( "no_questions_by_user" ) )
{           
        Log.d( "Post execute: " , "NOOOT  OKKKK - no questions by user so far" );   
}
于 2012-04-12T12:25:09.703 回答
0

我建议你使用一些静态变量来存储你的字符串,这样你就可以避免输入错误。

于 2012-04-12T12:20:04.677 回答