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

Java错误:无法从对象数组中找到符号,java,arrays,object,constructor,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<numOfSensor

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

我有两个文件,在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。我最近添加了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还是新手。为什么会发生此错误

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

sensors[i].SensorSim(sensorNom, sensorErr);
你不是这样做的。我怀疑你想要:

sensors[i] = new SensorSim(sensorNom, sensorErr);
您正在尝试像这样调用构造函数:

sensors[i].SensorSim(sensorNom, sensorErr);
你不是这样做的。我怀疑你想要:

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

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

替换

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


您尝试在SensorSim实例sensors[i]上运行一个名为SensorSimdouble、double的方法,该实例目前还不存在

如果您的意思是在每个阵列元素上创建SensorSim实例

sensors[i].SensorSim(sensorNom, sensorErr);
应成为:

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

更重要的是,您的runSimulation方法将双精度作为参数,并使用该参数调整阵列传感器的大小=new SensorSim[numOfSensors];:此double将向下转换为int。

您尝试在SensorSim实例sensors[i]上运行一个名为SensorSimdouble的方法,该方法在此时甚至不存在

如果您的意思是在每个阵列元素上创建SensorSim实例

sensors[i].SensorSim(sensorNom, sensorErr);
应成为:

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

更重要的是,您的runSimulation方法将双精度作为参数,并使用该参数调整阵列传感器的大小=new SensorSim[numOfSensors];:此double将向下转换为int。

由于以下代码行,您将收到错误:

sensors[i].SensorSim(sensorNom, sensorErr);
相反,这将起作用:

sensors[i] = new SensorSim(sensorNom, sensorErr);
请记住,传感器[i]就像有

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

由于以下代码行,您会收到错误:

sensors[i].SensorSim(sensorNom, sensorErr);
相反,这将起作用:

sensors[i] = new SensorSim(sensorNom, sensorErr);
请记住,传感器[i]就像有

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

完美无瑕。我在调试时将double改为int,但没有更改帖子。非常感谢。完美无缺。我在调试时将double改为int,但没有更改帖子。非常感谢。