Почему иначе, если работа? - PullRequest
0 голосов
/ 29 февраля 2012

Пользователь вводит 3 числа, и я предполагаю, что все являются правильными целыми числами и различны. Я пытаюсь заставить программу распечатать последовательность, начиная с номера самого низкого значения до самого высокого значения. Почему не мой, если здесь работает? Или я совершаю явную ошибку в коде?

Код не полный, я только написал это и затем проверил. Когда я ввожу 8, затем 2, а затем 4, я намерен напечатать 2,3,4,5,6,7,8, но это не так. Вместо этого он печатает 4,5,6,7,8

    System.out.print("Enter a number: ");
    int n1 = Integer.parseInt(in.readLine());
    System.out.print("Enter a number: ");
    int n2 = Integer.parseInt(in.readLine());
    System.out.print("Enter a number: ");
    int n3 = Integer.parseInt(in.readLine());

    if ((n1 > n2) | (n2 > n3)) {
        for (int i = n3; (i <= n1); i++) {
            System.out.print(i + ",");
        }
    }
    else if ((n1 > n3) | (n3 > n2)) {
        for (int i = n2; (i <= n1); i++) {
            System.out.print(i + ",");
        }
    }
    }
}

Ответы [ 3 ]

3 голосов
/ 29 февраля 2012

Ваша логика неверна.Когда значения n1 = 8, n2 = 2 и n3 = 4, n1 > n2 равны true, ваш код в конечном итоге выбирает первый путь (цикл от n3 до n1).Значение n3 даже не принимается во внимание.

Имейте в виду, что если вы придерживаетесь текущего подхода, вам понадобится около шести предложений «else if» для обработки всех возможных комбинаций.начальных и конечных переменных.Возможно, вам посчастливится выяснить, каковы минимальные и максимальные значения, назначив их двум переменным и зацикливая значения между этими двумя значениями.Это сэкономит вам много печатать.

3 голосов
/ 29 февраля 2012

Предположительно, в вашем первом условии вы хотите сказать, что "n1 больше, чем n2, а n2 больше, чем n3".Однако оператор «и» записывается как &&, а не как | (который является оператором «или битовый уровень»).Таким образом, ваше первое условие (n1 > n2) достаточно для удовлетворения первого if, поэтому else не применяется.

2 голосов
/ 29 февраля 2012

Java логический оператор ИЛИ ||, а не | что означает BITWISE OR

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