簡體   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