Java 猜数游戏问题

标签 java loops

我正在尝试用 Java 构建一个猜数游戏,它不同于通常的猜数游戏,在这种游戏中,您猜测数字,然后程序会告诉您数字是高还是低。我正在尝试构建一个程序猜测数字的位置,然后您说它是高还是低,直到程序找到您选择的数字。

我在“if”语句中遇到问题,程序猜测的数字太低。

具体问题在这里:

if (hilow.equals("l"))
        {
            middle = middle * 2;
            System.out.println(middle);
            numbGuesses++;
        }

到目前为止的整个程序如下:

import java.util.*;

public class NumbGuess
{
    public static void main(String args[])
    {
        int numbGuesses = 0;
        boolean win = false;
        int hi = 1000000;
        int low = 0;
        Scanner input = new Scanner(System.in);
        int middle = hi / 2;
        System.out.println(middle);


    while (win == false)
    {
        String hilow = input.nextLine();

        if (hilow.equals("h"))
        {
            middle = middle / 2;
            System.out.println(middle);
            numbGuesses++;
        }

        if (hilow.equals("l"))
        {
            middle = middle * 2;
            System.out.println(middle);
            numbGuesses++;
        }

        if (hilow.equals("y"))
        {
            win = true;
            System.out.println("It took: " + numbGuesses + " guesses");
        }
    }
}
}

我遇到的问题是每当数字太低时就会出现永久循环:

enter image description here

我认为我需要更改操作中间件的方式以获得有效结果。

最佳答案

你的逻辑有问题。当数字太低时,你不应该只乘以 2,当它太高时,你不应该只除以 2。

新的猜测应该在范围的中间。如果您的第一个猜测是 500000,而用户说它太小,则该数字介于 500000 和最大数字 (1000000) 之间,因此新的猜测应该是 (1000000-500000)/2=750000 ,而不是 500000*2。如果第一次猜测太大,则数字在最小数字 (0) 和 500000 之间,因此下一次猜测应该是 (500000-0)/2=250000

关于Java 猜数游戏问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26194051/

相关文章:

java - 如何使用 ImageView 创建 Javafx 图像 slider

loops - Drupal 8 中的循环字段

javascript - 创建动态数组 Javascript

PHP mysqli 只显示一个用户

r - 通过循环在 R 中创建大量绘图

java - 使用 Graph API v2.1 进行 Facebook 帖子搜索

java - 使用 linkedin 进行 Spring OAuth 登录

java - 如何更改Spring Social JdbcUsersConnectionRepository表名和列名?

java - 从其他网站抓取数据

javascript - 我如何让这个循环工作?它返回未定义的 angularjs