首页 > 解决方案 > 在 Java 中打印返回值

问题描述

我目前正在用Java制作一个高低猜谜游戏。我相信我有两个问题阻碍了游戏正常运行。

首先,我在playGame方法中有一个 while 语句,它并没有像现在这样改变,如果做出正确的猜测,我很难理解如何让它改变。据我了解,我无法更改boolean bool = true;的值 从 giveResponse 方法,它必须从相同的方法playGame完成?如果有比使用 while 语句更好的方法吗?

其次,当做出正确的猜测并且playGame方法将参数guessCount的值返回给 main 方法时,它应该被打印出来。我对这个游戏的说明说它应该在返回后打印在 main 方法中。

import java.io.Reader;
import java.util.Scanner;
public class HiLo2 {
 public static void main(String[] args) {

  System.out.println("Decide a level of difficulty\r"
    + "1. 1-10 \r"
    + "2. 1-100 \r"
    + "3. 1-1000");

  Scanner reader = new Scanner(System.in);
  int n = reader.nextInt();

   if (n==1) {
             playGame(10);
   }
         else if (n==2) {
             playGame(100);
         }
         else if (n==3) {
          playGame(1000);
         }
         else {
          System.out.println("This level of difficulty doesn't exist. Please try one between 1 and 3.");
         }
  }

 public static int playGame(int maxNumber) {
  int answer = (int)(Math.random() * maxNumber) +1;
  int guessCount = 0;
  boolean bool = true;
  Scanner reader = new Scanner(System.in);
  System.out.println("Guess a number between 1 and " + maxNumber);

  while (bool) { 
  int guess = reader.nextInt();
  guessCount = guessCount + 1;
  giveResponse(answer, guess);
  }

  return guessCount;
 }

 public static void giveResponse(int answer, int guess) {  
  if (guess == answer) {
   System.out.println("Your guess is correct!\r");
  }
  else if (guess > answer) {
   System.out.println("Your guess is too high, guess again:\r");
  }
  else if (guess < answer) {
   System.out.println("Your guess is too low, guess again:\r");
  }
 }
}

我希望这些问题足够清晰和具体。任何指向正确方向的指针都值得赞赏。

标签: javareturn-value

解决方案


你可以让 giveResponse 方法返回一个布尔值

static boolean giveResponse(...) 

并放在return false;盒子里if (guess == answer){return true在方法的最后。不要调用giveResponsevoid 方法,而是使用bool = giveResponse(answer,guess).

而对于第二个问题,在if语句之前的main方法中添加一个int numberOfGuesses,并调用playGame,numberOfGuesses = playGame(...),然后System.out.println("你猜到" + numberOfGuesses + "次。" ); 在 if 语句之后。


推荐阅读