场景:当从EditText中丢失焦点时,我检查它是否包含null(在第一个if块中)。
如果是的话,我会举杯祝酒
在else-if块中,我检查EditText是否包含字母
然后我会举杯祝酒,但是当我运行应用程序时,即使输入正确,Toast也会显示。
即:如果我输入任何字母,不应显示Toast,则只有在输入null或digit / special符号时才会显示。
这是代码
et1.setOnFocusChangeListener(new View.OnFocusChangeListener() {
@Override
public void onFocusChange(View v, boolean hasFocus) {
// TODO Auto-generated method stub
if(!hasFocus)
{
a = et1.getText().toString();
if (a.equals(""))
{
Toast.makeText(getApplicationContext(), "Your entry is incorrect!!", Toast.LENGTH_LONG).show();
}
else if (!a.contains("[a-z]")||!a.contains("[A-Z]")) {
Toast.makeText(getApplicationContext(), "Your entry is incorrect!!", Toast.LENGTH_LONG).show();
}
else
{
}
请帮忙
答案 0 :(得分:1)
它不起作用,因为:
if (a == "")
无法在Java中使用
使用
if (a.equals(""))
代替
此外,String.contains
不使用正则表达式,而是使用CharacterSequences
因此,除非您的字符串不包含确切的字符序列"[a-z]"
或"[A-Z]"
(并且这两个字符串中只有一个),否则您永远不会得到匹配。
请参阅:http://developer.android.com/reference/java/lang/String.html#contains(java.lang.CharSequence)
答案 1 :(得分:1)
'=='运算符仅比较引用。要比较字符串值,必须使用equals()方法。
而不是
if (a == "")
使用
if (a.equals(""))
答案 2 :(得分:0)
问题是:
if (a == "")
无法像这样比较字符串。而是检查大小等于0,或使用equals()
方法检查特定字符串。