2016-11-08 59 views
1

我正在尝试为Android应用程序在页面中进行登录。我的团队负责人已决定使用web服务进行此操作。String.equals()总是返回false?

每当在使用日志,发送请求,以3层可能的反应:

0: Wrong Password 
20: Wrong username 
otherwise: a UUID 

我试图验证还给由Web服务这样的结果:

String resultString = result.toString(); 
    if (resultString.equals("20")) { 
     Toast.makeText(getBaseContext(), "Het ingevulde emailadres klopt niet!", Toast.LENGTH_LONG).show(); 
     return; 
    } else if (resultString.equals("0")) { 
     Toast.makeText(getBaseContext(), "Het ingevulde wachtwoord klopt niet!", Toast.LENGTH_LONG).show(); 
     return; 
    } else { 
     Toast.makeText(getBaseContext(), "Debug, klopt", Toast.LENGTH_LONG).show(); 
     return; 
    } 

似乎像我的基本代码。然而,这段代码总是显示最底层的语句,所以它让前两个为false。

出于调试的目的,我也将resultString返回到我的控制台。 (删除样本中的那一行)。在那里,我可以很明显地看到回报的结果实际上是20

这样简单的代码不能做我想做的事情吗?

谢谢。

+1

检查是否没有空间 – Chol

+1

检查resultString的长度。 –

+0

由于响应不是你正在比较的(“0”和“20”)而不是“equals”,你应该使用'contains' – SilentKiller

回答

1

响应不完全是您比较的字符串,即“0”和“20”。但响应

0: Wrong Password 
20: Wrong username 
otherwise: a UUID 

如果要比较的字符串,那么它应该是

选项:1

String resultString = result.toString(); 
if (resultString.equals("20: Wrong username")) { 
    // code 
} else if (resultString.equals("0: Wrong Password")) { 
    // code 
} else { 
    // code 
} 

选项:2

而不是eqauls你应该使用contains

String resultString = result.toString(); 
if (resultString.contains("20")) { 
    // code 
} else if (resultString.contains("0")) { 
    // code 
} else { 
    // code 
} 
3

Teh的代码似乎是好的...也许在结果中的空白? 尝试修剪resultString。 其中es 20,result或resultString?

作为一个建议,它通常做的更好"".equals(object),否则,如果对象为null,将抛出NullpointerExceptcion

问候

0

我与上述所有的同意 - 代码看起来不错。

尝试使用String.compareTo并查看int返回的值以检查隐藏的差异。

此外,请尝试打印String.toCharArray + String.length以标识多余的字符。

0

如果您从Web服务返回的完整字符串未提取代码(0或20),则需要将'equals'替换为'contains'。