Похоже, у вас есть 3 основные проблемы, которые возникают в вашем коде:
- Похоже, вы не разбираетесь в массивах Java
- Вы, кажется, непонимать правила определения содержания Java
- В сочетании с вышеизложенным вы неправильно обрабатываете возвращаемые значения функции
Я не уверен, какая из них является основной проблемой, которую вы задаетео, но здесь идет ...
Что-то, вероятно, это то, что вы уже знаете, но я начинаю с самого начала, чтобы убедиться, что я не пропущу ту часть, которую вы пропустили
Массив представляет собой последовательность значений фиксированного размера.Итак, double[10]
- это массив с 10 значениями, каждое из которых типа double
. Но double
само по себе не является массивом, это одно значение типа double
.
Итак, эта строка:
double dataset = new double[10];
не имеет смысла.Вы говорите, что переменная с именем dataset
является двойным, но затем вы пытаетесь поместить массив двойных в эту переменную.Это не работает.
Либо вы хотите, чтобы набор данных был массивом, либо вы хотите, чтобы он был одним значением, но это не может быть и то и другое.Возможно, вы захотите
double[] dataset = new double[10];
Позже у вас появятся такие строки:
avgarray(dataset[]);
devequasion(dataset[]);
Эти строки не являются допустимым кодом Java - похоже, вы пытаетесь обойтипроблема в объявлении dataset
неправильным типом, но вы работаете не правильно.
Если вы измените объявление набора данных на double[]
, тогда вы можете просто иметь
avgarray(dataset);
devequasion(dataset);
и он будет делать то, что вы хотите.
В Java каждая переменная имеет scope .Область действия определяет, как долго существует переменная и где ее можно использовать.
Итак, в качестве примера вы объявляете sum
внутри вашего main
метода.Это означает, что эта переменная может существовать только внутри этого метода.Вы не можете использовать его (либо для получения значения, либо для установки значения) в другом методе - даже если этот другой метод вызывается из main
.Это означает, что внутри вашего avgarray
метода, где у вас есть
sum = 0;
, это неправильно.Вы не можете сделать это, потому что сумма не существует внутри этого метода.
Вам нужно удалить объявление sum
из main
(потому что вы никогда не используете его в main) и объявитьвместо avgarray
.
У вас есть несколько переменных, которые нуждаются в таком лечении.
В некоторых случаях вы используете одну и ту же переменную в двух разных методах.Для этого вам нужно сделать переменную членом класса, а не методом.
Так, например, если вы хотите, чтобы два метода использовали mean
переменная, тогда это должна быть переменная-член, объявленная так:
public class averages
{
private static double mean = 0;
public static void main(String[] args)
{
// ...
Но , это, вероятно, неправильный способ сделать то, что вы пытаетесь сделать.
Если вы посмотрите на ваш avgarray
метод, вы увидите, что он возвращает значение типа double
public static double/ avgarray(double[] arraydata)
и внутри метода вы правильно return mean;
Нокогда вы называете это avgarray(dataset);
, вы не смотрите на возвращаемое значение.
Вместо этого вы хотите иметь 2 переменных, называемых "mean" .Один внутри main
и один внутри avgarray
.Из-за правил видимости Java они являются совершенно разными переменными, которые просто имеют одно и то же имя.
Если вы сделаете это, вы можете написать
public static void main(String[] args)
{
// ....
double mean = avgarray(dataset);
// ....
}
public static double avgarray(double arraydata)
{
// ...
double mean = sum/10;
return mean;
}
Учитывая, что некоторые другие ответы имеютпредоставив вам версии вашего кода, исправляющие некоторые из этих проблем, вы сможете собрать все это из моих объяснений и их исправлений.
Удачи!