2013-12-07 3 views
0

Я получаю некоторые ошибки с помощью метода, который я создаю, но я не знаю, что это значит или как его исправить.Не удается найти символ в моем массиве

Ошибка: DataSet.java:99: ошибка: не найден символ int size = this.medianArray.length;

public double median() 
{ 
    double[] medianArray = getData(); 
    Arrays.sort(medianArray); 
    int size = this.medianArray.length; 
    int one = 1; 
    int two = 2; 

    double median = 0.0; 
    if (size % 2 == 0) { 
    median = this.medianArray[size/two] + this.medianArray[(size/two) + one]; 
    median = median/two; 
    } 
    else 
    { 
    // 1, 2, 3, 4, 5, (6), 7, 8, 9, 10 , 11 
    median = this.medianArray[((size - one)/two) + one]; 
    } 
    return median; 

} 

О методе GetData просто создает копию массива:

public double[] getData() 
{ 


    double[] DataCopy = new double[size()]; 

    for (int k = 0; k < size(); k++) 
     DataCopy[k] = this.data[k]; 

    return DataCopy; 

    } 
+0

Есть ли поле medianArray в вашем классе? Какое полное и точное сообщение об ошибке? –

ответ

0

Проблема с этой линией:

int size = this.medianArray.length; 

medianArray является локальным по отношению к функции median, но вы ссылаетесь его this:

Внутри метода экземпляра или конструктора this является ссылкой на текущий объект - объект, метод которого или конструктор вызывается. Вы можете ссылаться на любое поле члена текущего объекта из метода экземпляра или конструктора, используя this.

Удалить this, и вам должно быть хорошо. Пожалуйста, ознакомьтесь с этой официальной страницей учебника: Using the this Keyword

+0

Спасибо, я продолжал использовать это во всей моей программе, потому что это то, что сказал мой профессор. Поэтому я должен использовать его только при ссылке на переменную вне определенного метода. Если переменная уже объявлена ​​в методе, я не должен беспокоиться. – Jason091

0

Ключевое слово «это», означает, что medianArray является атрибутом вашего класса. В вас случае, это локальная переменная внутри функции, вы можете просто сделать

medianArray.length 
0

Сконцентрируйтесь на это в методе median():

double[] medianArray = getData(); 
Arrays.sort(medianArray); 
int size = this.medianArray.length; 

medianArray создается как локальной переменной. Позже вы попытаетесь ссылаться на него как переменную-член класса.

Это невозможно, измените последнюю строку на: int size = medianArray.length;.

0

Скорее всего, массив medianArray не является обязательством вашего класса и, возможно, вы хотите использовать medianArray, указанный getData(). Так просто удалить this перед этим в заявлении в строке 99.

Смежные вопросы