2014-10-31 72 views
0

我不熟悉Java(以及一般編程)。我有一個程序應該在兩個可變字符串上運行一個方法,但前提是這些字符串的長度相同並且不相同。嘗試跳過Java中while循環的迭代時遇到問題

我使用

while(i < n){ 
    if (string1.length() == string2.length() && string1 != string2){ 
     compare(string1, string2); 
     i++ 
    } 
} 

嘗試,但它仍然運行比較方法即使字符串是相同的。

我也使用

while(i < n){ 
    if (string1.length() == string2.length(){ 
     if (string1 == string2){ 
      continue; 
     } 
     compare(string1, string2); 
    } 
    i++ 
} 

嘗試,但這樣也仍然運行無論字符串是否是相同的比較方法。

是否有我的格式問題,或者可能是誤用的關鍵字?謝謝!

+1

嘗試使用String equals()方法進行比較。 – 2014-10-31 05:49:43

+0

如果字符串真的是相同的(如果通過'string1 = string2'使用相同的值)'compare'會非常驚訝 – 2014-10-31 05:55:02

回答

1

這個string1 != string2不測試String值相等,只有引用相等。您需要!string1.equals(string2)。或者你while將需要像,

if (string1.equals(string2)) { 
    // ... they're equal. 
} 

還值得一提的是,這兩個String(S)必須具有相同的length()equals()將返回false

+0

你快25秒 – 2014-10-31 05:50:08

0

使用equals()方法而不是==。雙等號不能用於對象比較。

0

變化

if (string1.length() == string2.length() && string1 != string2) 

隨着

if (string1.length() == string2.length() && !string1.equals(string2)) 

==檢查引用相等。當你進入String變量時,它們在堆中有兩個不同的參考,同時具有相同的value。要檢查您應該使用的值是否相等equals()