Java разделение: найдено необратимых типов: int - PullRequest
2 голосов
/ 30 мая 2011

Что с этим кодом не так;

Ответы [ 3 ]

4 голосов
/ 30 мая 2011

Вы пытаетесь автоматически установить int на объект Double, что недопустимо.

Попробуйте:

int numOfPrimes=pf.FindNumPrimes(10000);

Double frequency=((double)numOfPrimes)/10000d;
4 голосов
/ 30 мая 2011

Не передавайте из примитивов в типы-оболочки.Используйте строчные буквы double.И вам не нужно ничего приводить в этом случае - компилятор делает это автоматически.Вышесказанное можно упростить до:

int numOfPrimes = ...;
double frequency = numOfPrimes / 10000d;

Вы почти никогда не должны смешивать примитивы с обертками.И всегда предпочитайте примитивы (если это возможно).Используйте Double.valueOf(..) для конвертации, если вам нужно.

3 голосов
/ 30 мая 2011

Double не является примитивным типом (например, int, long, byte и т. Д.).Это тип класса.Вы можете конвертировать между двойным и двойным, используя автобокс, но не между int и Double.

Вы должны либо объявить numOfPrimes как double, либо выполнить приведение к double вместо Double

double numOfPrimes=pf.FindNumPrimes(10000);
Double frequency=((Double)numOfPrimes)/10000d;

или

int numOfPrimes=pf.FindNumPrimes(10000);
Double frequency=((double)numOfPrimes)/10000d;

или без лишних приведений:

double numOfPrimes = pf.FindNumPrimes(10000);
Double frequency= numOfPrimes /10000d;

или

int numOfPrimes = 10;
Double frequency = numOfPrimes /10000d;
...