我在名为result。
的变量中有这个字符串:"no_questions_by_user"
比我这样检查:
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" )
知道该块为什么不被执行?
谢谢!
答案 0 :(得分:5)
代码看起来不错。您的变量result
必须具有其他值。
我的猜测是结果字符串的结尾或开头有一些空格。
答案 1 :(得分:5)
就个人而言,我认为这段代码很乱。
我会编写一个接收结果的方法,并在Map中查找消息。所有这些如果测试让我的眼睛流血:
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的东西,你可以在配置中进行,而不是触摸代码。
答案 2 :(得分:4)
尝试:
result.trim().equals( "no_questions_by_user" )
答案 3 :(得分:3)
您是否在调试器中看到“no_questions_by_user”?
您可以尝试在测试之前修剪它,因为在调试器中很难检测到空格。
答案 4 :(得分:1)
确保“result”变量的值中没有空格。 在输入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" );
}
答案 5 :(得分:0)
我建议您使用一些静态变量来存储字符串,这样可以避免输入错误。