[英]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.