Я не вижу объявления для random
. Я предполагаю, что это переменная экземпляра, объявленная во включающем классе. Если это так, я подозреваю, что random
не был инициализирован со ссылкой на объект Random
. Когда оператор ... = random.nextDouble();
выполняется со ссылкой на объект null
, результатом является NPE.
Кстати, если вы исправите вопиющие проблемы стиля с помощью оператора loop, источник вашей проблемы будет легче обнаружить.
for (int i = 0; i < N; i++) {
x[i] = random.nextDouble(); // NPE on this line
y[i] = random.nextDouble();
}
Хороший стиль - лучшая практика. Потратив несколько секунд на правильное форматирование кода, вы можете сэкономить минуты, когда вы / кто-то еще его читаете, и часы (или даже дни), если ваш плохой стиль скрывает ошибку ... например:
for(i=0;i<N;i++)x[i]=random.nextDouble();y[i]=random.nextDouble();
(ОК ... «роковые» ошибки, связанные со стилем в приведенном выше примере, не те, что вы совершили. Но это не лишает меня смысла.)