【问题标题】:Does Arrays.equals work with chars in javaArrays.equals 是否适用于 java 中的字符
【发布时间】:2013-08-21 11:28:28
【问题描述】:

我正在尝试查看两个 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);
    }



            }

}

【问题讨论】:

标签: java arrays char


【解决方案1】:

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

同样来自documentation

如果两个指定的字符数组等于 1,则返回 true 其他。如果两个数组都包含 相同数量的元素,以及所有对应的元素对 两个数组相等。换句话说,两个数组相等,如果它们 以相同的顺序包含相同的元素。另外,两个数组 如果两个都为 null,则认为引用相等。

【讨论】:

    【解决方案2】:

    你可能想要

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

    而不是

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

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

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

    【讨论】:

    • &amp;&amp; 表示与。 || 表示或。作为一个孩子是金发女郎与作为一个孩子是金发女郎是完全不同的。
    【解决方案3】:

    来自源代码:

    Arrays.equals 按顺序检查以下内容

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

    【讨论】:

      【解决方案4】:

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

      【讨论】:

        猜你喜欢
        • 2016-08-21
        • 2010-09-24
        • 2012-02-05
        • 1970-01-01
        • 2014-08-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多