将循环数游戏转变为do while循环数游戏

时间:2013-07-20 21:40:12

标签: java

我使用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");
    }
}

4 个答案:

答案 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的价值。这意味着循环只会在以下情况下停止:

          
  • 此人猜对了
  •       
  • 该人有12次尝试
  •    

答案 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);