if-else阻止在android中无法正常工作

时间:2015-07-25 18:38:17

标签: android if-statement

场景:当从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
                {
                }

请帮忙

3 个答案:

答案 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(""))

请参阅:What is the difference between == vs equals() in Java?

答案 2 :(得分:0)

问题是:

if (a == "")

无法像这样比较字符串。而是检查大小等于0,或使用equals()方法检查特定字符串。