Java错误:无法从对象数组中找到符号

时间:2012-12-30 22:33:00

标签: java arrays object constructor

我环顾四周试图通过重新编译其他类来解决这个问题,但似乎没有任何工作。

我有两个文件,在SensorDataDisplay.java中我有以下代码:

private SensorSim[] sensors;

...

public void runSimulation(double numberOfSensors)  {
  sensors = new SensorSim[numOfSensors];
  int i = 0;

  for(i = 0; i<numOfSensors; i++) {
    sensors[i].SensorSim(sensorNom, sensorErr);
  }
}

然后在同一目录中我将SensorSim.java编译成SensorSim.class,构造函数如下所示。

public SensorSim(double n, double d) {
    if (probs == null)
      loadData();
    nominal = n; sd = d;
    rng = new Random();
    running = true;
}

当我刚创建一个sensorSim时,这个工作正常。我最近添加了sensorSims数组,这是我收到此错误的时候:

$ javac SensorDataDisplay.java

SensorDataDisplay.java:44: cannot find symbol
symbol  : method SensorSim(double,double)
location: class SensorSim
      sensors[i].SensorSim(sensorNom, sensorErr);
            ^
1 error

环顾四周,我发现它可能与较旧的类文件有关,因此我删除并重新编译了其他文件(SensorSim.class)。我读的另一个可能的原因是与范围有关,但它对我来说没问题,但我是Java的新手。为什么可能会发生此错误?

4 个答案:

答案 0 :(得分:2)

您尝试在SensorSim(double, double)实例(SensorSim)上运行名为sensors[i]的方法,此时此时甚至不存在。

如果你的意思是在每个数组元素上创建一个SensorSim实例,

sensors[i].SensorSim(sensorNom, sensorErr);

应该成为:

sensors[i] = new SensorSim(sensorNom, sensorErr);

此外,您的runSimulation()方法将double作为参数并使用它来调整数组的大小(sensors = new SensorSim[numOfSensors];):此double将是“向下”到int

答案 1 :(得分:1)

您正试图像这样调用构造函数

sensors[i].SensorSim(sensorNom, sensorErr);

这不是你怎么做的。我怀疑你想要:

sensors[i] = new SensorSim(sensorNom, sensorErr);

答案 2 :(得分:1)

替换

sensors[i].SensorSim(sensorNom, sensorErr);

sensors[i] = new SensorSim(sensorNom, sensorErr);

答案 3 :(得分:1)

由于这行代码,您收到错误:

sensors[i].SensorSim(sensorNom, sensorErr);

这将起作用,而不是:

sensors[i] = new SensorSim(sensorNom, sensorErr);

请记住,传感器[i]就好像是

SensorSim s; 
s = new SensorSim(sensorNom, sensorErr);