繁体   English   中英

如果我的while循环成功,如何使最后一行不打印?

[英]How do I make the last line not print if my while loop is successful?

我正处于我项目的最后一点,而且我只能解决一个小错误。

我的目标是不打印“你的知识到目前为止:”+ idk); 如果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.

最简单的方法是:

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.");

只需在打印前检查是否满足条件

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.");

}

很酷......这样做:

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()函数,但是在打印语句之前就打破了循环。

您可以将它翻转到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 + "\"" + "!");

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM