gpt4 book ai didi

Java猜谜游戏循环错误

转载 作者:行者123 更新时间:2023-12-01 11:22:07 24 4
gpt4 key购买 nike

我在尝试创建一个简单游戏时遇到问题。我确信这只是一个简单的错误,但我似乎无法理解。实际上有两个错误,一个是它在每次执行后都没有增加 numOfTries ,另一个是它没有正确处理异常。我希望它在输入不是整数时输出一个字符串。如何修复这两个错误?

/*
* Guessing game
*/

import java.util.*;

public class GuessNumber {

public static void main(String[] args) {
Scanner input = new Scanner(System. in );
guess(input);
System.out.println("You got it correct after " + guess(input) + " tries");
}

public static int guess(Scanner input) {
Random randomNumber = new Random();
int numToGuess = randomNumber.nextInt(10);
int numOfTries = 0;
String prompt = "Enter your guess (integer from 1 to 10)";
numOfTries++;
getInt(input, prompt);
if (getInt(input, prompt) == numToGuess) {
return numOfTries;
} else if (getInt(input, prompt) != numToGuess) {
getInt(input, prompt);
}
return numOfTries;
}

public static int getInt(Scanner input, String prompt) {
int userGuess = 0;
System.out.println(prompt);
try {
userGuess = input.nextInt();
} catch (Exception e) {
System.out.println("You didn't enter an int");
}
return userGuess;
}
}

最佳答案

一些事情:

  1. 您在不同的时间两次调用guess()。函数中的局部变量在函数调用之间不保留其值,因此这可能是您认为 numTries 不增加的原因。此外,通过调用它两次,您会强制用户猜测两个可能不同的随机数(也就是您玩游戏两次)。 getInt() 也有同样的问题。

  2. 调用 nextInt(10) 的方式将为您提供 0 到 9 之间的数字(含 0 和 9)。你永远不会得到 10,对方也永远不会猜到 0,因为提示告诉他不要这样做。

  3. 每次调用猜测时,只让用户尝试一次,因此 numTries 会递增并返回,但仅一次,每次都会产生返回值 1。要让用户多次猜测,请放入 while 循环。

  4. 当你有异常处理时,你应该将其放入一个循环中,以便用户输入输入,直到输入有效的 int。

    public static void main(String[] args)
    {
    Scanner input = new Scanner(System.in);
    int guesses = guess(input);
    System.out.println("You got it correct after " + guesses + " tries");
    }

    public static int guess(Scanner input)
    {
    String prompt = "Enter your guess (integer from 1 to 10)";
    Random randomNumber = new Random();
    numToGuess = randomNumber.nextInt(10) + 1; //+1 to make it 1-10 inclusive
    numTries = 0;

    while (getInt(input, prompt) != numToGuess)
    {
    numTries++;
    }

    return numTries;
    }

    public static int getInt(Scanner input, String prompt)
    {
    int userGuess = -1;
    boolean valid = false;
    System.out.println(prompt);

    while (!valid)
    {
    try
    {
    userGuess = input.nextInt();
    valid = true;
    }
    catch (NumberFormatException e)
    {
    System.out.println("You did not enter an int. Try again");
    }
    }

    return userGuess;
    }

关于Java猜谜游戏循环错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31103774/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com