Как сделать так, чтобы последняя строка не печаталась, если мой цикл while успешен? - PullRequest
0 голосов
/ 08 апреля 2019

Я нахожусь на последнем кусочке моего проекта, и есть только 1 маленькая ошибка, которую я не могу исправить.

Моя цель - не печатать строку "Ваши знания до сих пор:" +ИДК);если цикл while завершен.

Я пытался переместить его в разные строки, но, похоже, ничего не помогло.

    char guess = getGuess(console);
    String idk = replaceBlanks(secretWord, blanks, guess);
    System.out.println("Your knowledge so far: " + idk);
    int counter = 1;
    while (!(idk.equals(secretWord))) {
        counter ++;

        guess = getGuess(console);

        idk = replaceBlanks(secretWord, idk, guess);
     System.out.println("Your knowledge so far: " + idk);

    }
    System.out.println("Congratulations, you discovered the word " +  "\"" + idk + "\"" + "!");
    System.out.println("It took you " + counter + " guesses.");

  }
}

ОЖИДАЕТСЯ

Your knowledge so far: _______
Guess a letter: r
Your knowledge so far: R_____R
Guess a letter: a
Your knowledge so far: RA___AR
Guess a letter: c
Your knowledge so far: RAC_CAR
Guess a letter: e
Congratulations, you discovered the word "RACECAR"!
It took you 4 guesses.

АКТУАЛЬНО

Your knowledge so far: _______
Guess a letter: r
Your knowledge so far: R_____R
Guess a letter: a
Your knowledge so far: RA___AR
Guess a letter: c
Your knowledge so far: RAC_CAR
Guess a letter: e
Your knowledge so far: RACECAR    <<<<<<<<<<<<-------
Congratulations, you discovered the word "RACECAR"! 
It took you 4 guesses.

Ответы [ 4 ]

0 голосов
/ 08 апреля 2019

Вместо этого вы можете перевернуть его в цикл do ... while.

// not sure about this... idk should look like "_____" at this point.
String idk = replaceBlanks(secretWord,blanks,null);
int counter = 0;
do {
    System.out.println("Your knowledge so far: " + idk);
    counter ++;
    guess = getGuess(console);
    idk = replaceBlanks(secretWord, idk, guess);
} while (!(idk.equals(secretWord)));
System.out.println("Congratulations, you discovered the word " +  "\"" + idk + "\"" + "!");
0 голосов
/ 08 апреля 2019
char guess = getGuess(console);
String idk = replaceBlanks(secretWord, blanks, guess);
System.out.println("Your knowledge so far: " + idk);
int counter = 1;
while (!(idk.equals(secretWord))) {
    counter ++;
    System.out.println("Your knowledge so far: " + idk);

    guess = getGuess(console);

    idk = replaceBlanks(secretWord, idk, guess);

}
System.out.println("Congratulations, you discovered the word " +  "\"" + idk + "\"" + "!");
System.out.println("It took you " + counter + " guesses.");

}

0 голосов
/ 08 апреля 2019

Круто ... сделать это так:

char guess = getGuess(console);
String idk = replaceBlanks(secretWord, blanks, guess);
System.out.println("Your knowledge so far: " + idk);
int counter = 1;
while (true) {
    counter ++;

    guess = getGuess(console);

    idk = replaceBlanks(secretWord, idk, guess);
if( idk.equals(secretWord)) break ;
 System.out.println("Your knowledge so far: " + idk);

   }
    System.out.println("Congratulations, you discovered the word 
" +  "\"" + idk + "\"" + "!");
System.out.println("It took you " + counter + " guesses.");

}

Таким образом, вы в основном выходите из цикла, как только понимаете, что условие остановки выполнено. Вы вызываете функцию guess (), но выходите из цикла непосредственно перед печатью оператора.

0 голосов
/ 08 апреля 2019

Самый простой подход был бы такой:

while (!(idk.equals(secretWord))) {
  counter ++;

  guess = getGuess(console);

  idk = replaceBlanks(secretWord, idk, guess);
  if (!idk.equals(secretWord)) {
    System.out.println("Your knowledge so far: " + idk);
  }
}
System.out.println("Congratulations, you discovered the word " +  "\"" + idk + "\"" + "!")
System.out.println("It took you " + counter + " guesses.");

Просто проверяю, не выполнено ли условие перед печатью

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...