Ошибка: double cannot be dereferenced
Для решения одной задачи мне надо округлить результат деления Integer/Integer до большего целого числа (если он будет являться дробью).
Чтобы решить эту задачу я нашёл две конструкции:
Конструкция 1:
int a = 1;
int b = 3;
int x = (a+(b-1))/b;
Конструкция 2:
int a = 1;
int b = 3;
int x = Math.ceil((double)a / b).intValue();
Как я понимаю, единственно правильным будет использовать конструкцию 2, т.к. конструкция 1 работает не для всех значений (например, отрицательные b).
Проблема в том, что в своём коде при компиляции я получаю непонятную мне ошибку, на которую я не нашёл самостоятельного ответа:
java: double cannot be dereferenced
Пример моего кода:
public class Main {
public static void main(String[] args) {
int h = 20;
int up = 7;
int down = 3;
int predUpDays = h - up;
int progress = up - down;
int days = Math.ceil((double)predUpDays / progress).intValue();
days++;
System.out.println(days);
}
}
Что я делаю не так?
Ответы (3 шт):
Math.ceil((double)predUpDays / progress)
вот это выражение возвращает double. А это "простой тип", у него нет методов и соответственно их нельзя позвать. double это не Double.
Очень похоже, что Вам нужно где то такое
int days = (int)Math.ceil((double)predUpDays / progress);
.intValue() в вашем случае это метод класса Double попробуйте как в ответе @KoVadim либо так
int days = Double.valueOf(Math.ceil((double) predUpDays / progress)).intValue();
Вам правильно уже ответили, как нужно исправить код. Если вы так и не увидели ошибку, то разбейте эту строку:
int days = Math.ceil((double)predUpDays / progress).intValue();
следующим образом:
double quotient = (double) predUpDays / progress;
double ceilingResult = Math.ceil(quotient);
int days = ceilingResult.intValue();
Совершенно очевидно, что третья строчка не может быть выполнена, так как у переменной double ceilingResult не может быть не то что метода .intValue(), а вообще каких бы то ни было методов.