我正在制作一些代码,允许程序检查用户是否已输入姓名和出生日,并确定生日是否为今天并且生日快乐。然而,虽然我设法让程序使用正确的日期并播放歌曲,但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);
}
答案 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。
toString()
不需要getText()
,因为它本身会返回字符串。bday.getText().toString()!=""
更改为!bday.getText().equals("")
name.getText().toString()!=""
更改为!name.getText().equals("")
答案 2 :(得分:0)
我认为问题在于“!=”运算符。在Java中,运算符“==”和“!=”仅比较引用的对象是否相等。它意味着对象本身只有“==”。而“.equals()”函数比较两个对象的内容。您应该始终使用“equals()”函数来比较两个对象的内容。 使用
btn.euqals(v);
!name.getText().toString().equals("");
代替。