繁体   English   中英

某种程度上,如果if语句不起作用?

[英]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();
 }

与Android进行字符串比较,查找是否相等

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM