2014-02-22 175 views
0

我有下面的代碼。匹配一個字母的單詞

import java.io.File; 
import java.util.ArrayList; 
import java.util.Scanner; 

public class Dummy { 
    public static void main(String args[]) throws Exception { 

     String word="hi"; 
     String[] one={"a","b","c"}; 
     String[] two={"d","e","f"}; 
     String[] three={"g","h","i"}; 
     String[] four={"j","k","l"}; 
     String[] five={"m","n","o"}; 
     String[] six={"p","q","r","s"}; 
     String[] seven={"t","u","v"}; 
     String[] eight={"w","x","y","z"}; 

     for(int i=0;i<word.length();i++) 
     { 
      for(int j=0;j<three.length;j++) 
      { 
       if(three[j].equals(word.charAt(i))) 
       { 
        System.out.println("Matched"); 
       } 
       else 
       { 
        System.out.println("err"); 
       } 

      } 
     } 
    } 
} 

在這裏,我的概念是匹配字符串中的一個字母到創建的數組,這裏的輸出是所有錯誤(條件說明不匹配)。請讓我知道我哪裏錯了。

謝謝

回答

3

您正在比較單字符字符串(從您的陣列)到一個字符。製作你的數組char,而不是String。 (並使用==對它們進行比較。)

+0

非常感謝你,這是有幫助的,我想知道是否有辦法我可以得到數組名稱。像匹配和數組是三 – user2423959

0

的charAt返回一個字符不是一個字符串,因此它不能是「等於」的字符串

0

你爲什麼不使用String.indexOf()

for(int j=0;j<three.length;j++) 
{ 
    if(word.indexOf(three[j]) == -1) 
    { 
      System.out.println("err"); 
    } 
    else 
    { 
      System.out.println("Matched"); 
    } 

} 

這樣,你會在一個循環進入..

0

嘗試這樣的:在for循環

StringBuffer result = new StringBuffer(); 
for (int i = 0; i < one.length; i++) { 
    result.append(one[i]); 
} 
if (result.toString().equals(word)) { 
    System.out.println("Matched"); 
} else { 
    System.out.println("err"); 
} 
1

的體單元 - [j]爲的字符串,而word.charAt(我)是char ..所以equals()對於這些將始終是false。

您應該將其更改爲

如果(三級[J] .equals(將String.valueOf(word.charAt(I))))

,以便它比較字符串的實際情況下,或定義數組(一,二,三..)是char數組而不是字符串數組,以便您可以簡單地使用==。

請在JavaDoc中檢查String,Object和其他對象的equals(),並且可能還需要檢查hashCode()以充分理解Java中equals()的含義。

0

只是說明顯的....有時候看到實際的代碼是有幫助的。以下摘錄自java.lang.String

特別參見粗體條件。如果instanceof失敗,它將返回false!

public boolean equals(Object anObject) { 
    if (this == anObject) { 
     return true; 
    } 
    if (**anObject instanceof String**) { 
     String anotherString = (String)anObject; 
     int n = count; 
     if (n == anotherString.count) { 
     char v1[] = value; 
     char v2[] = anotherString.value; 
     int i = offset; 
     int j = anotherString.offset; 
     while (n-- != 0) { 
      if (v1[i++] != v2[j++]) 
      return false; 
     } 
     return true; 
     } 
    } 
    return false; 
    } 
相關問題