Arrays.equals是否与java中的chars一起使用

时间:2013-08-21 11:28:28

标签: java arrays char

我试图看看两个char数组是否相等但是由于某种原因它们似乎从来没有像Java一样正确读取。我很确定这可能与我对Arrays.equals()方法缺乏了解有关,所以如果有人愿意解释一下Arrays.equals()在数组中看起来会很棒(来自我的')从一个简单的谷歌搜索看到它似乎检查数组中有多少元素,然后内容,但我在该元素的方法中看到的东西,例如大写字母使它不等)

由于这很可能只是错误的代码,这里是我的代码:

int count = 0;
    Highscore words = new Highscore();

    String word = words.getWord();
  word = word.toUpperCase();
    char guess;

    for(int i = 0; i<word.length(); i++)
    {
        charwo[count] = word.charAt(i);
        charda[count]= '_';
        count++;
    }

    int guesses =7;

    while(guesses != 0 || !Arrays.equals(charwo, charda))
    {
        System.out.println("");

        for(int l=0; l<count; l++)
        {
            System.out.print(" "+charda[l]);

        }


   guess = JOptionPane.showInputDialog("Enter letter ").charAt(0);


    if(word.toUpperCase().contains(String.valueOf(guess).toUpperCase()))
    {

        for(int k = 0; k<word.length(); k++)
        {
            if(String.valueOf(guess).toUpperCase().equals(String.valueOf(charwo[k]).toUpperCase()))
            {
                charda[k]=charwo[k];


            }

          }


    }


    else
    {

            guesses = guesses-1;

            System.out.println("guesses left "+guesses);
    }



            }

}

4 个答案:

答案 0 :(得分:3)

Arrays.equals()适用于char数组。 char是一种原始类型,可以安全地使用==。

同样来自documentation

  

如果两个指定的chars数组等于1,则返回true   另一个。如果两个数组都包含,则认为两个数组相等   相同数量的元素,以及所有相应的元素对   这两个数组相等。换句话说,两个数组是相等的   包含相同顺序的相同元素。另外,两个阵列   如果两者都为空,则认为引用是相等的。

答案 1 :(得分:1)

你可能想要

while(guesses != 0 && !Arrays.equals(charwo, charda))

而不是

while(guesses != 0 || !Arrays.equals(charwo, charda))

当用户仍然猜测时,继续循环并且他没有找到解决方案。

如果对算法有疑问,请在调试模式下启动应用程序,逐行执行,并评估表达式以查看其值。所有当前的IDE(例如IntelliJ,Eclipse,NetBeans)都非常容易。

答案 2 :(得分:0)

来自源代码:

Arrays.equals按顺序检查

  1. 如果它们是相同的引用则返回true。
  2. 如果其中任何一个为null,则返回false
  3. 如果长度不匹配则返回false。
  4. 迭代内容并将索引处的每个字符与相同索引处的char其他数组进行比较。在第一次不匹配时返回false。

答案 3 :(得分:0)

Arrays.equals()适用于char数组,因为它也是java中的数组。我想你可以自己检查一下。