2012-12-16 57 views
0

可能重複:
How do I compare strings in Java?爪哇 - 當變量等於如果聲明不要再追串

(這可能是重複的,我不知道的.equals我道歉。)

當我決定創建一個4字符的字符串生成器時,我今天在Java中搞砸了。我有程序生成我定義的每個可能的字符組合。這不是一個項目,我只是想看看這是否可能。我的問題在於字符串檢查。我會先發布代碼。

String text = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"; 
char[] chars = text.toCharArray(); 
String name = "Mike"; 
String pass; 

outerLoop: 
for (int a = 0; a < chars.length; a ++) { 
    for (int b = 26; b < chars.length; b++) { 
     for (int c = 26; c < chars.length; c++) { 
      for (int d = 26; d < chars.length; d++) { 
       pass = chars[a]+""+chars[b]+""+chars[c]+""+chars[d]; 
       System.out.println(pass); 
       if (pass == name){ 
        System.out.print("password"); 
        break outerLoop; 
       } 
      } 
     } 
    } 
} 

嵌套if將檢查是否pass等於麥克。如果是,那麼它會打印密碼並將打破for循環。

  • pass = chars[a]...正確的方法來做到這一點?當我在沒有使用if的情況下進行測試時,我已將其打印出來並正確打印所有組合。它確實打印了Mike,但沒有記入if
  • 我也更改了嵌套的for循環,因此它們以小寫字母開頭,因爲程序在進行微小更改時需要一段時間才能運行。
+1

......我們真的需要根據SO的規則提出這個問題。這是...無處不在! – Doorknob

+0

我爲重複道歉,我不知道'.equals()',我沒有在網上找到它。 –

回答

9
  if (pass == name){ 

應該

  if (pass.equals(name)){ 

使用String.equals()方法來檢查字符串平等。 ==運算符只需檢查兩個引用變量是否指向同一個對象。 equals()方法檢查兩個字符串是否有意義相等。

+1

祝賀8888代表:) – Doorknob

+1

@門童哈哈......謝謝:) – PermGenError

+0

我覺得這樣一個簡單的解決方案真的很愚蠢。在我發佈之前,當我問他時,我的教授也沒有聽清楚。 –

0

字符串應該使用equals()

+0

真的嗎?那麼我需要和我的教授談談。我讓他在我發佈之前先看看這個。 –

+0

你的「教授」在接受我的求職面試時不會持續一分鐘。 – Bohemian

+1

如果有人看一看,那並不意味着他可以看到所有的錯誤。 – AlexWien

0

這種每天出現至少一次進行比較。應該有一個專門針對它的「密切問題」選項。儘管如此,在這裏再次...

==運算符測試如果兩個操作數是相同的實例

.equals()方法比較值兩個操作數的,但只有在類已實施該方法(其中String所做的),否則它的行爲相同==(這是Object類如何實現它)。