[英]Somehow this if statement isn't working?
嗨,我正在Eclipse上使用新的android 4.0 SDK进行开发。
不知何故,这种简单的if语句不起作用。 我通过捆绑从另一个活动获取数据:
Bundle gotBundle = getIntent().getExtras();
gotPack = gotBundle.getString("key");
Toast.makeText(this, gotPack, Toast.LENGTH_SHORT).show();
我试过在烤面包和警报对话框上输出“ gotPack”,两者都返回字符串值“ Pattern 1”。 (这是我到目前为止想要的)
现在,当我尝试我的if语句时:
if (gotPack == "Pattern 1") {
filePath="android.resource://" + getPackageName() + "/" + R.raw.p2;
Toast.makeText(this, "WORKED1", Toast.LENGTH_SHORT).show();
}
它拒绝输入if语句,我已经对其进行了测试,因为它不会产生吐司输出或任何其他结果。 我做错了什么? gotPack最初被标识为字符串。
将==
与Java中的对象一起使用会比较引用,以检查引用是否引用了完全相同的对象。 您想改用.equals()
,如下所示:
"Pattern 1".equals(gotPack)
对于字符串比较,您需要使用.equals()
if ("Pattern 1".equals(gotPack)) {
Java对象通常以大写字母(* O * bject,* S * tring,* L * ist,* I * nteger)开头,而基元是小写字母(* i * nt,* d * ouble)。 任何对象都必须重写.equals()方法,以便对对象进行适当的比较,否则,您将比较内存引用而不是对象本身。
不要使用==
比较字符串
if (gotPack.equals("Pattern 1")) {
应该做的把戏
在Java中,应使用equals
来比较String,如下所示:
"Pattern 1".equals(gotPack)
这应该可以解决您的问题
当您使用==时,如果两个String
引用同一个对象,它将起作用
String str1 = "test";
String str2 = "test";
在这种情况下, str1 == str2
为true
但是如果这样的话:
String str1 = "test";
String str2 = new String("test");
在这种情况下, str1 == str2
将为false,但是str1.equals(str2)
将为true,因为equals会比较值而不是引用。
==
运算符的工作方式是查看两个元素,并查看它们是否位于相同的内存地址。 这意味着,如果两个相等的字符串位于不同的内存位置,则==
将无法识别它。
相反,您应该使用equals()
方法。
if (gotPack.equals("Pattern 1")) {
...
}
尝试这个:
if (gotPack.equals("Pattern 1")) {
filePath="android.resource://" + getPackageName() + "/" + R.raw.p2;
Toast.makeText(this, "WORKED1", Toast.LENGTH_SHORT).show();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.