重复的字母逻辑在java中不起作用

时间:2018-03-16 01:55:18

标签: java arrays loops while-loop

我正在使用一个版本的hangman,我需要包含一个检查是否已使用字母猜测的条件。我的重复信件if语句不能正常工作。有什么建议吗?

不完全代码。只有一件作品

    char[] repeatedLetters = new char[26];

    int incorrect = 0;
    while (incorrect < 7)
    {
        System.out.println("\nGuess a letter: ");
        char guess = kb.next().toUpperCase().charAt(0);  // case insensitive

        for (int i = 0; i < repeatedLetters.length; i++)
        {
            if (repeatedLetters[i] == guess) {
                System.out.println("You already guessed " + guess + ".");
                System.out.println("Guess a letter: ");
                guess = kb.next().toUpperCase().charAt(0);
            }
            else 
                repeatedLetters[i] = guess;     
        }

1 个答案:

答案 0 :(得分:0)

就个人而言,我建议使用List代替数组。

List<Character> repeatedLetters = new ArrayList<>();

int incorrect = 0;
while (incorrect < 7)
{
    System.out.println("\nGuess a letter: ");
    char guess = kb.next().toUpperCase().charAt(0);  // case insensitive

    if (validateCharacter(guess) && repeatedLetters.contains(guess)) {
        System.out.println("You already guessed " + guess + ".");
        continue;
    }
    else {
        repeatedLetters.add(guess);
    }

    // Other things
}

如果您不允许使用列表,则需要将else块移到for循环之外,使用带标签的while循环,并手动计算重复的字符数。

int repeatedCount = 0;
getInput : while (incorrect < 7) {
    // ......
    for (int i = 0; i < repeatedCount; i++) {
        if (repeatedLetters[i] == guess) {
            System.out.println("You already guessed " + guess + ".");
            continue getInput;
        }
    }
    repeatedLetters[repeatedCount] = guess; 
    repeatedCount++;