如果声明在android中不断激活

时间:2013-12-13 01:59:22

标签: java android if-statement

我正在制作一些代码,允许程序检查用户是否已输入姓名和出生日,并确定生日是否为今天并且生日快乐。然而,虽然我设法让程序使用正确的日期并播放歌曲,但if语句似乎没有正常工作。当我输入当前日期作为生日时,生日快乐歌曲总是启动,即使名字框为空,它应该询问你的名字。这只发生在生日文本框和当天匹配时,所以任何人都可以帮助我让我的if语句正常工作。这是我的if语句代码。

if((btn==v) && (name.getText().toString()!="") && (bday.getText().toString()!="") && (bday.getText().toString().equals(formatdate))){
        String msg1 = "Today is " + sdf.format(cdate.getTime()) + ". Happy Birthday, " + name.getText() + "!";
        toast = Toast.makeText(this, msg1, Toast.LENGTH_SHORT);
        toast.show();
        //Context context = null;           

        mp.start();
        //mp.stop();
        response.setText(msg1);         
    }else if(btn==v && name.getText().toString().equals("") && bday.getText().toString()!=""){
        String msg3 = "Please enter your name.";
        toast = Toast.makeText(this, msg3, Toast.LENGTH_SHORT);
        toast.show();
        mp.stop();
        response.setText(msg3);             
    }else if(btn==v && name.getText().toString()!="" && bday.getText().toString().equals("")){
        String msg4 = "Please enter your birthday.";
        toast = Toast.makeText(this, msg4, Toast.LENGTH_SHORT);
        toast.show();
        response.setText(msg4);
    }else if(btn==v && name.getText().toString().equals("") && bday.getText().toString().equals("")){
        String msg5 = "Please enter your name and birthday.";
        toast = Toast.makeText(this, msg5, Toast.LENGTH_SHORT);
        toast.show();
        response.setText(msg5);
    }else{
        String msg2 = "Today is " + formatdate + ". Sorry today is not your birthday.";
        toast = Toast.makeText(this, msg2, Toast.LENGTH_SHORT);
        toast.show();
        response.setText(msg2);
    }

3 个答案:

答案 0 :(得分:1)

您需要更改一些内容。你不需要这样做:

name.getText().toString()

你可以摆脱toString()部分。

二。而不是做这样的事情:

name.getText().toString()!=""

将其更改为:

!name.getText().equals("")

由于.equals()返回布尔值,您无法将字符串与==!=等进行比较。

最后,您需要确保不要使用b == v,而是使用b.equals(v)

答案 1 :(得分:0)

  

在Java中,==运算符是的简单比较。对于   对象引用,值是引用,因此x == y   如果x和y引用同一个对象,则返回true。

  1. toString()不需要getText(),因为它本身会返回字符串。
  2. bday.getText().toString()!=""更改为!bday.getText().equals("")
  3. name.getText().toString()!=""更改为!name.getText().equals("")

答案 2 :(得分:0)

我认为问题在于“!=”运算符。在Java中,运算符“==”和“!=”仅比较引用的对象是否相等。它意味着对象本身只有“==”。而“.equals()”函数比较两个对象的内容。您应该始终使用“equals()”函数来比较两个对象的内容。 使用

btn.euqals(v);
!name.getText().toString().equals("");

代替。