0

Hangman で既に使用されている文字、つまり要素を印刷する必要がありますがchar array、左からではなく右から 1 つずつ表示されます。たとえば、最初の文字は 26 番目の場所に表示されます。2 番目は 25 番目または 26 番目の場所 (アルファ オーダーに応じて) などを占めます... アドバイスをいただければ幸いです。

命数:5 単語:B _ _ _ これまで使った文字:BY

命 : 4 ことば : B _ _ _ これまでに使った文字 : BEY

命数 : 4 単語 : BOO _ これまでに使った文字 : BEOY

char[] lettersUsedCharArray = new char[26];


/**************************************************
* Method - add guessLetter to lettersUsedCharArray
* 
**************************************************/
public void addGuessLetter(char guessLetter)
{
    this.guessLetter = guessLetter;
    for (int i = 0; i < this.lettersUsedCharArray.length; i++)
    {   
        if (this.lettersUsedCharArray[i]== '\0')
        {
                this.lettersUsedCharArray[i]=this.guessLetter;
                break;
        }   
    }
    Arrays.sort(this.lettersUsedCharArray);
}

/**************************************************
 * Method - print out out letters used
 * 
 **************************************************/
public void printLettersUsedCharArray(char[] lettersUsedCharArray, OutputBox oBox)
{
    oBox.print("Letters used so far : ");
    for(int i = 0; i < lettersUsedCharArray.length; i++)
    {
        oBox.print(lettersUsedCharArray[i]); 
    }
}
4

1 に答える 1

0

更新された回答

この方法で配列をソートしようとしている場合[b,a,_,_]--> [a,b,_,_]( _「空の」場所とは言わないでください) を使用して、先頭にマークをArrays.sort配置_しないようにするには、次の例のように、ソートする必要がある範囲を指定する必要があります。

char[] arr = new char[4];
arr[0] = 'B';
arr[1] = 'A';

System.out.println(Arrays.toString(arr)); // before sorting: [B, A, , ]
Arrays.sort(arr, 0, 2);// sort from 0 index (inclusive) to 2 index (exclusive) 
System.out.println(Arrays.toString(arr)); // after sorting: [A, B, , ]

したがって、配列に char を追加するには、空のスペースが見つかるまで配列を反復処理し、その文字を配列に配置して で並べ替えることができArrays.sort(arr, 0, i+1)ます。

于 2013-02-02T13:15:33.907 に答える