Давайте рассмотрим ошибки сверху.
int arr[] = new int[(int) n];
На данный момент n
еще не объявлено, поэтому вы не можете использовать его здесь.Просто переместите объявление arr
в после объявления и чтения n
со сканера.В качестве примера рассмотрим тип int
для n
.double
на самом деле не имеет смысла.
System.out.println("Mean: " + mean);
Если это должен был быть вызов метода mean
, вам необходимо поставить квадратные скобки после имени метода и необходимые аргументы в скобках, как в mean(arr)
.mean(arr)
по-прежнему не будет работать, потому что arr
имеет тип int[]
, а метод требует тип double[]
.Я не могу сказать вам, какое здесь правильное решение, так как я не уверен, что вы хотели прочитать числа снаружи или внутри метода.Снаружи мне показалось бы более естественным.
System.out.println("Enter" + n + " numbers: ");
Здесь нельзя использовать переменную n
, поскольку она является локальной переменной в методе main
.Опять же, я не уверен, что вам это нужно, если вы намеревались прочитать числа в другом месте и передать заполненный массив в метод.
array[i] = input.nextDouble();
Здесь две ошибки: у вас нет переменной массива с именем array1
.Возможно, вы имели в виду numbers
, я не уверен.И здесь вы не можете использовать переменную input
, поскольку она является локальной переменной в методе main
(та же проблема, что и в n
выше).Либо объявите вместо этого статическое поле, либо передайте его в качестве аргумента методу.
Ошибки в методе deviation
аналогичны, поэтому я не буду повторяться.
Поскольку я понимаю, чтоэто должно быть упражнением для вас, я не собираюсь решать его для вас и лишать вас обучения.Я надеюсь, что у вас есть еще один или два шага.
Редактировать
В редактировании вашего вопроса есть несколько прекрасных улучшений.Вы все еще не решили, читать ли числа в main
или в mean
?
System.out.println("Mean: " + mean(numbers, n));
В вашем методе main
не объявлена переменная numbers
(та же проблема в следующей строке).В противном случае хорошо.
sum += a[i];
Вы, вероятно, имели в виду meanSum
и numbers
?Или, может быть, вы хотели объявить sum
вместо meanSum
над циклом for
?
Отсутствует правая фигурная скобка после строки выше, чтобы завершить первый цикл for
.
double dqDiff = 0;
Простая опечатка: вы ссылаетесь на эту переменную как sqDiff
позже, поэтому необходимо использовать то же самое написание здесь в объявлении.
return Math.sqrt(mean(number, n));
Отсутствует s
для numbers
.Я не уверен, что эта простая версия математики верна.
Пожалуйста, не ждите, что я возьму больше раундов по этому коду.