我使用while循环制作了一个数字游戏,但我被告知我应该在做的时候做。我想知道如何从这种格式转移它来做。
import java.util.Scanner;
public class SS_Un6As2 {
public static void main(String[] args) {
int guess = 0;
int randomNumber = (int) (Math.random() *100) +1;
Scanner scan = new Scanner(System.in);
boolean running = true;
while(running){
System.out.println("Guess your number");
guess = scan.nextInt();
if(guess == randomNumber) {
System.out.println("You are correct");
break;
}
else if (guess > randomNumber){
System.out.println("Too high.");
}
else if (guess < randomNumber){
System.out.println("Too low");
}
else {
System.out.println("Try again");
}
}
System.out.println("Thanks for playing");
}
}
答案 0 :(得分:6)
解决您的问题
while(running){
System.out.println("Guess your number");
guess = scan.nextInt();
if(guess == randomNumber) {
System.out.println("You are correct");
break;
}
else if (guess > randomNumber){
System.out.println("Too high.");
}
else if (guess < randomNumber){
System.out.println("Too low");
}
else {
System.out.println("Try again");
}
}
变为
do {
System.out.println("Guess your number");
guess = scan.nextInt();
if(guess == randomNumber) {
System.out.println("You are correct");
break;
}
else if (guess > randomNumber){
System.out.println("Too high.");
}
else if (guess < randomNumber){
System.out.println("Too low");
}
else {
System.out.println("Try again");
}
}
while(running);
差异
在while loop
中,代码可以运行0-*
次。 (0到很多)。在do-while
循环中,代码可以运行1-*
次。
堆栈溢出精神
尝试将这个地方视为最后的手段。我用Google搜索了do while loop java
,第一个链接是this,这完全解释了您的问题。将来,也许你应该在依赖我们的研究之前使用自己的研究方法。
为您编辑
for loop
不同,因为它会运行x
次。像这样:
for(int x = 0; x < 5; x++)
{
System.out.println("Hello " + x);
}
/**
* OUTPUT:
* Hello 0
* Hello 1
* Hello 2
* Hello 3
* Hello 4
*/
将While循环应用于您的问题
do-while
循环在while
内有条件语句。
do {
}
while(something is true)
将其视为您的if statement
。现在你希望这是真的,直到这个人猜到12
次。从逻辑上讲,您希望保留猜测次数的计数,因此我们将引入一个名为int
的{{1}}。并且您只希望guesses
到达guesses
而不是更多,所以这就是我们要去的地方。
12
我所做的是组成一个名为do {
// Some code goes here.
guesses ++;
// Increase the number of guesses if they got it wrong.
}
while(correct = false && guesses < 12)
的变量,它告诉人们是否正确。每当他们猜错时,我就会增加correct
的价值。这意味着循环只会在以下情况下停止:
答案 1 :(得分:1)
do{
System.out.println("Guess your number");
guess = scan.nextInt();
if(guess == randomNumber)
{
System.out.println("You are correct");
break;
}
else if (guess > randomNumber)
{
System.out.println("Too high.");
}
else if (guess < randomNumber)
{
System.out.println("Too low");
}
else
{
System.out.println("Try again");
}
} while(running);
答案 2 :(得分:1)
在你的情况下,这很容易:
boolean running = true;
do {
System.out.println("Guess your number");
guess = scan.nextInt();
if(guess == randomNumber) {
System.out.println("You are correct");
break;
}
else if (guess > randomNumber){
System.out.println("Too high.");
}
else if (guess < randomNumber){
System.out.println("Too low");
}
else {
System.out.println("Try again");
}
} while (running)
通常,您可以通过以下方式将任意 while循环转换为 do-while循环:
while (condition) {
...
}
将成为
if (condition) {
do {
...
} while (condition)
}
答案 3 :(得分:1)
如果您在猜测随机数时使用break
,那么就没有必要使用run作为控件来摆脱循环。我会在发生这种情况时改变运行方式。此外,您打印出“再试一次”的行将永远不会运行,因此您可以删除该else块。它看起来像这样。
do{
System.out.println("Guess your number");
guess = scan.nextInt();
if(guess == randomNumber)
{
System.out.println("You are correct");
running = false;
}
else if (guess > randomNumber)
{
System.out.println("Too high.");
}
else if (guess < randomNumber)
{
System.out.println("Too low");
}
} while(running);