我的逻辑有什么问题(Java语法)

时间:2010-05-06 01:34:39

标签: java logic

我正在尝试创建一个简单的程序来选择一个随机数并从用户那里获取输入。程序应该告诉用户猜测是热的( - / + 5单位)还是冷的,但我从未达到其他条件。

以下是代码部分:

    public static void giveHint (int guess) {
    int min = guess - 5;
    int max = guess + 5;
    if ((guess > min) && (guess < max)) {
        System.out.println("Hot..");
    } else {
        System.out.println("Cold..");
    }
}

9 个答案:

答案 0 :(得分:11)

int min = guess - 5;
int max = guess + 5;

应该是:

int min = actualAnswer - 5;
int max = actualAnswer + 5;

答案 1 :(得分:8)

这是你的问题:

int min = guess - 5;
int max = guess + 5;

min始终小于guessmax始终大于guess

答案 2 :(得分:0)

您需要传递实际答案,而不仅仅是猜测,因为逻辑无法分辨出适当的混音/最大值应该是什么:

public static void giveHint (int guess, int actual) {
    int min = actual - 5;
    int max = actual + 5;
    if ((guess > min) && (guess < max)) {
        System.out.println("Hot..");
    } else {
        System.out.println("Cold..");
    }
}

答案 3 :(得分:0)

您将guess定义为> min(因为int min = guess - 1)和< max(因为int max = guess + 5)。所以当然第一个条件总是得到满足。在定义minmax时,您应该使用实际的机密值。

答案 4 :(得分:0)

minmax应该使用玩家正在寻找的值(秘密值)而不是玩家提供的值。实际上,minmax每次玩家猜测时都会改变,而您甚至不使用秘密值。

答案 5 :(得分:-1)

你是根据猜测计算最小值和最大值,所以猜测总是在最小值和最大值之间所以(猜测&gt; min)&amp;&amp; (猜测&lt; max)总是如此。

答案 6 :(得分:-1)

让我们举个例子:

int guess = 20;
int min = guess - 5 = 15;
int max = guess + 5 = 25;

因此

min < guess < max

为什么?

因为你把猜测与自己比较!我认为你需要得到实际答案,而不是猜测

答案 7 :(得分:-1)

我无法在评论中加入完整的内容,因此以下是您的代码应该是:

    public static void giveHint (int guess, int actual) {
    int min = actual - 5;
    int max = actual + 5;
    if ((guess > min) && (guess < max)) {
        System.out.println("Hot..");
    } else {
        System.out.println("Cold..");
    }

答案 8 :(得分:-1)

另一种解决方案:

    public static void giveHint (int actual, int guess) {
         if(Math.abs(actual - guess) <= 5) {
             System.out.println("Hot");
             return;
         }

         System.out.println("Cold");
    }