0

我需要打印出已经在 Hangman 中使用的字母,即元素,char array但它们是从右侧而不是从左侧一一出现。例如,第一个字母出现在第 26 个位置。第二个占据第 25 或第 26 个位置(取决于 alpha 顺序)等等......非常感谢您的建议。

寿命: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,_,_](以免说那_是“空”的地方) with Arrays.sortthen 以避免_在开头放置标记,您应该指定必须排序的范围,如下例所示:

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 回答