在我的阵列上找不到符号

时间:2013-12-07 16:18:07

标签: java arrays

我正在使用我正在制作的方法出现一些错误,但我不知道它意味着什么或如何修复它。

错误说: 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;

  }

4 个答案:

答案 0 :(得分:0)

关键字“this”表示medianArray是您班级的一个属性。在你的情况下,它是你函数中的局部变量,你可以简单地做

medianArray.length

答案 1 :(得分:0)

median()方法中专注于此:

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

您将medianArray创建为本地变量。稍后您尝试将其作为类成员变量引用。

这是不可能的,将最后一行更改为:int size = medianArray.length;

答案 2 :(得分:0)

最有可能的是,数组medianArray不是您班级的字段,可能您希望使用medianArray返回的getData()。因此,只需在第99行的语句中删除之前的this

答案 3 :(得分:0)

问题在于这一行:

int size = this.medianArray.length;

medianArraymedian函数的本地函数,但您使用this引用它:

在实例方法或构造函数中,this是对当前对象的引用 - 正在调用其方法或构造函数的对象。您可以使用this从实例方法或构造函数中引用当前对象的任何成员字段。

删除this,你应该好好去。请查看此官方教程页面:Using the this Keyword