Что не так с моей логикой (синтаксис Java) - PullRequest
1 голос
/ 06 мая 2010

Я пытаюсь сделать простую программу, которая выбирает случайное число и принимает данные от пользователя. Программа должна сообщить пользователю, было ли предположение горячим (- / + 5 единиц) или холодным, но я никогда не достигну условия else.

Вот часть кода:

    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 ]

11 голосов
/ 06 мая 2010
int min = guess - 5;
int max = guess + 5;

Должно быть:

int min = actualAnswer - 5;
int max = actualAnswer + 5;
8 голосов
/ 06 мая 2010

Вот ваша проблема:

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

min ВСЕГДА меньше guess, а max ВСЕГДА больше guess.

0 голосов
/ 03 марта 2012

min и max должны использовать значение, которое ищет игрок (секретное значение), а не значение, указанное игроком. Таким образом, min и max меняются каждый раз, когда игрок дает предположение, и вы даже не используете секретное значение.

0 голосов
/ 22 июля 2011

Другое решение:

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

         System.out.println("Cold");
    }
0 голосов
/ 06 мая 2010

Я не могу поместить всю вещь в комментарии, поэтому вот каков должен быть ваш код:

    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..");
    }
0 голосов
/ 06 мая 2010

Вы определяете guess как > min (потому что int min = guess - 1) и < max (потому что int max = guess + 5). Поэтому, конечно, первое условие всегда выполняется. Вы должны использовать фактическое секретное значение при определении min и max.

0 голосов
/ 06 мая 2010

Позволяет использовать пример:

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

поэтому

min < guess < max

Почему?

Потому что вы сравниваете догадку с самим собой! Я думаю, что вам нужен фактический ответ, а не предположение

0 голосов
/ 06 мая 2010

Вам нужно передать фактический ответ, а не только предположение, так как логика не может определить, каким должно быть подходящее сочетание / max:

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..");
    }
}
0 голосов
/ 06 мая 2010

Вы рассчитываете минимальное и максимальное значения на основе предположения, поэтому предположение всегда находится между минимальным и максимальным значениями, поэтому (предположение> min) && (предположения

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...