2014-02-22 139 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; 
    } 
相关问题