0

2 つの char 配列が等しいかどうかを確認しようとしていますが、何らかの理由で Java と等しいと正しく読み取られていないようです。これは Arrays.equals() メソッドに対する私の理解不足に関係していると確信しているので、Arrays.equals() が配列内で何を見ているかを誰かが説明したいなら、それは素晴らしいことです (私が何から単純なGoogle検索から見たところ、配列に含まれる要素の数とその内容を確認しているように見えますが、メソッドが要素内で何を見ているかに興味があります。たとえば、大文字は不等式になります)

これはおそらく単に欠陥のあるコードであるため、私のコードは次のとおりです。

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

4 に答える 4

3

はいArrays.equals()、char配列で機能します。char はプリミティブ型であり、== を安全に使用できます。

ドキュメントからも:

指定された 2 つの文字配列が互いに等しい場合に true を返します。2 つの配列が同じ数の要素を含み、2 つの配列内の対応するすべての要素のペアが等しい場合、2 つの配列は等しいと見なされます。つまり、同じ要素が同じ順序で含まれている場合、2 つの配列は等しいと言えます。また、2 つの配列参照は、両方が null の場合、等しいと見なされます。

于 2013-08-21T11:32:54.617 に答える
1

あなたはおそらくしたいです

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

それ以外の

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

ユーザーがまだ推測を残しており、解決策を見つけていない間、ループを続けます。

アルゴリズムに疑問がある場合は、アプリケーションをデバッグ モードで起動し、1 行ずつ実行し、式を評価してその値を確認します。現在のすべての IDE (IntelliJ、Eclipse、NetBeans など) では非常に簡単です。

于 2013-08-21T11:34:18.013 に答える
0

Arrays.equals()char配列はJavaの配列でもあるため、char配列で機能します。これは自分で確認できると思います。

于 2013-08-21T11:40:17.643 に答える
0

ソースコードから:

Arrays.equals以下を順番にチェック

  1. それらが同じ参照である場合、true を返します。
  2. いずれかが null の場合は、false を返します
  3. 長さが一致しない場合は false を返します。
  4. コンテンツを反復処理し、インデックスの各文字を同じインデックスの他の char 配列と比較します。最初の不一致で false を返します。
于 2013-08-21T11:39:00.090 に答える