簡體   English   中英

多次打印ArrayList

[英]Printing an ArrayList multiple times

我正在研究子手游戲中的猜測方法。 它接收用戶想要猜測的字母,並與單詞中的每個字母一起檢查。

public void checkGuess(String guessLetter)
{
    for(int i = 0; i < gameWord.length(); i++)
    {
        if(guessLetter.charAt(0) == (gameWord.charAt(i)))
        {
            hideword[i] = guessLetter.charAt(0);

        }
        else
        {
            hideword[i] = '_';
        }
    }
    System.out.println(hideword);
}

當前代碼使我輸入:

Have another user enter a word to play with:

Apple 
 Welcome to hang man! Below is your word:

 _ _ _ _ _ Enter a letter to guess
 p

 _pp__

 Enter a letter to guess

  l

  ___l_

 Enter a letter to guess

無論如何,它會一起打印“ p”和“ l”,而不是像這樣單獨打印嗎?

去掉:

else
{
    hideword[i] = '_';
}

從您的循環。 否則,先前的進度將被覆蓋。 游戲開始時, hideword應該用'_'填充,然后在游戲進行時對其進行修改。

使用Arrays.fill(char[], char)這樣的事情:

public Game(String word) {
    gameWord = word;
    hideword = new char[word.length()];
    Arrays.fill(hideword, '_'); // import java.util.Arrays;
}

public void checkGuess(String guessLetter) {
    for(int i = 0; i < gameWord.length(); i++)
        if(guessLetter.charAt(0) == (gameWord.charAt(i)))
            hideword[i] = guessLetter.charAt(0);
    System.out.println(hideword);
}

您可以通過_數組 (其中數組的長度是gameWord中字符總數的總和)來初始化隱藏字,然后從代碼中刪除其他部分來做到這一點

public void checkGuess(String guessLetter) {
    for(int i = 0; i < gameWord.length(); i++) {
        if(guessLetter.charAt(0) == (gameWord.charAt(i))) {
            hideword[i] = guessLetter.charAt(0);
        }
    }
    System.out.println(hideword);
}

您的代碼中發生的情況是,您的每次匹配都將覆蓋您代碼其他部分的第一個匹配結果,因此,如果您將其刪除,它將很好用,因為我們已經通過_ _ _初始化了Hideword

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM