Как не работает мое двойное сравнение? - PullRequest
0 голосов
/ 04 июня 2018

Это мой код:

  System.out.println(templist.indexOf(8.14));
            if (ds > 8.1000 && ds<8.1500) {
                dot = templist.indexOf(8.14);
                dot++;
                System.out.println(dot);
            }

System.out.println (точка);

Вот выходные данные: 1 0

почему не точкаполучить значение 2?Это int.

1 Ответ

0 голосов
/ 04 июня 2018

Результат:

-1
0

мог бы быть объяснен, если indexOf () не смог найти двойное значение 8.14 в списке.

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

System.out.println("Before if-test = " + templist.indexOf(8.14));
if (ds > 8.1000 && ds < 8.1500) {
    dot = templist.indexOf(8.14);
    dot++;
    System.out.println("Dot = " + dot);
}

Вышеуказанные изменения в вызове println () могут быть возвращены к исходному коду после того, как вы определили основную причину.

Другая возможность - посмотреть на метод классареализации.Если объект, возвращенный методом indexOf (), имеет метод toString (), который преобразует отрицательное значение в положительное значение (например, toString () был реализован для преобразования -1 в 1), тогда метод toString () будет вызыватьсяметод println ().Принимая во внимание, что

dot = templist.indexOf(8.14);

может возвращать -1.Это может объяснить вывод:

1
0

Надеюсь, это поможет.Спасибо!

...