Программа JAVA Hangman, выявляющая буквы по определенному индексу, обрабатывает несколько экземпляров символа в слове - PullRequest
0 голосов
/ 20 марта 2019
if (posOfGuessLetter == -1)
    {
        System.out.print("Your letter was not found in the 
        spaces provided");
    } //if
if (posOfGuessLetter == 0)
    {
        displayWordAsDashes = (guessLetter + 
        displayWordAsDashes.substring(posOfGuessLetter + 1));
        displayWord = 
        displayWordAsDashes.substring(posOfGuessLetter + 1);
    } //if
if (posOfGuessLetter == 9)
    {
    displayWordAsDashes = (displayWordAsDashes.substring(0, 
    posOfGuessLetter) + guessLetter);
    displayWord = (displayWordAsDashes.substring(0, 
    posOfGuessLetter));
    } //if
else
    {
        displayWordAsDashes = (displayWordAsDashes.substring(0, 
        posOfGuessLetter) + guessLetter + 
        displayWordAsDashes.substring(posOfGuessLetter + 1));
        displayWord = (displayWordAsDashes.substring(0, 
        posOfGuessLetter) + 
        (displayWordAsDashes.substring(posOfGuessLetter + 1)));
    }

while (displayWord.contains(guessLetter))
    {
        displayWordAsDashes = (displayWordAsDashes.substring(0, 
        posOfGuessLetter) + guessLetter + 
        displayWordAsDashes.substring(posOfGuessLetter + 1));
        displayWord = (displayWordAsDashes.substring(0, 
        posOfGuessLetter) + 
        (displayWordAsDashes.substring(posOfGuessLetter + 1)));
    } //while
    } //else
System.out.print("The updated word is: " + 
displayWordAsDashes);

Я пытаюсь создать программу Hangman, и в этой части она проверяет позицию индекса пользовательского ввода для символа, который они хотят найти в слове, а затем удаляет черту в этом индексе и показывает буквуони просто догадались.Тем не менее, моя программа не показывает обе буквы, если в слове есть две одинаковые буквы (т.е. naRRowing, lOOps), что я и пытался запрограммировать в конце цикла while.Может кто-нибудь сказать мне, что я испортил ??

1 Ответ

0 голосов
/ 20 марта 2019

Я не видел, какую ошибку вы сделали, но и pos == 0, и pos == 9 излишни из-за

aString.substring(aString.length());

и

aString.substring(0, 0);

оба возвращают пустую строку.

Если вам не нужно отслеживать, где находится письмо, вы можете сделать что-то вроде этого:

private String wordToGuess = "hangman";
private String guessedSoFar = wordToGuess.replaceAll(".", "-");
private String leftToGuess = wordToGuess;

public String guess(char c) {
    for(int i = 0 ; i < leftToGuess.length() ; i++) {
        if(leftToGuess.charAt(i) == c) {
            guessedSoFar = guessedSoFar.substring(0, i) + c + guessedSoFar.substring(i + 1);
        }
    }
    leftToGuess = leftToGuess.replace(c, '-');
    return guessedSoFar;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...