将一个字母与一个单词匹配

时间:2014-02-22 10:50:10

标签: java arrays

我有以下代码。

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");
                }

            }
        }
    }
}

这里我的概念是将字符串中的字母与创建的数组匹配,这里的输出都是错误的(条件表明不匹配)。请告诉我哪里出错了。

由于

6 个答案:

答案 0 :(得分:3)

您正在将单字符字符串(来自数组)与字符进行比较。将您的数组设为char,而不是String。 (并使用==来比较它们。)

答案 1 :(得分:1)

for循环中的元素three [j]是String,而word.charAt(i)是char ..所以equals()对那些将始终为false。

您应该将其更改为

如果(3 [j]的.equals(将String.valueOf(word.charAt(I))))

这样它可以比较字符串的实际上下文,或者将数组(一,二,三......)定义为char数组而不是字符串数组,这样就可以简单地使用==。

请检查String,Object和其他JavaDoc中的equals(),可能还需要检查hashCode()以完全理解equals()在Java中的含义。

答案 2 :(得分:0)

charAt返回char而不是字符串,因此它不能与String“等于”

答案 3 :(得分: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");
     }

}

这样你就可以进入一个循环..

答案 4 :(得分:0)

试试这样:

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");
}

答案 5 :(得分: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;
    }