java - 在 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");
}
}
}
我希望这些问题足够清晰和具体。任何指向正确方向的指针都值得赞赏。
解决方案
你可以让 giveResponse 方法返回一个布尔值
static boolean giveResponse(...)
并放在return false;
盒子里if (guess == answer){
,return true
在方法的最后。不要调用giveResponse
void 方法,而是使用bool = giveResponse(answer,guess)
.
而对于第二个问题,在if语句之前的main方法中添加一个int numberOfGuesses,并调用playGame,numberOfGuesses = playGame(...),然后System.out.println("你猜到" + numberOfGuesses + "次。" ); 在 if 语句之后。
推荐阅读
- database - 如何将多个 Web 应用程序和数据库从 AWS 迁移到 Azure
- python - 如何在烧瓶应用程序中使用用户的音频文件
- python - 将多行“表格”字符串转换为字典
- reactjs - 使用 useSelector 和 useDispatch 反应功能组件创建循环
- eclipse - Java 无法引导路径、eclipse、jdk-13
- autodesk-forge - Autodesk 将文件转换为 svf 不起作用
- python - Python Pandas 合并的问题
- hibernate - JPA ManyToMany 错误“无法添加外键约束”
- r - R Shiny:使用过滤后的数据表并再次过滤
- python - 将纹理加载到对象上时的 PyOpenGL 和 PIL.Image 颜色分离效果