我是Java的新手,正在尝试了解面向对象的编程。
我正在尝试将对象存储在数组中。但是,该数组与原始对象位于不同的类中。我发现需要编译器错误“不兼容的类型”(1个类)(另一个类)。
请看一下我的代码,让我知道我做错了什么。
这来自“ Cluster”类,并且该方法应该将“ FeatureVector”类中的对象存储到名为“ featureV”的数组中。
public boolean add (FeatureVector examples){
int currentPosition;
if (this.getSize()==this.featureV.length){
return false;
}
else
currentPosition=this.getSize();
featureV[currentPosition+1]=examples;
return true;
编辑:
这是定义Cluster以及FeatureV的方式:
class Cluster{
private Cluster [] featureV;
Cluster(int capacity){
Cluster [] featureV= new Cluster [capacity];
错误:
错误:要求的类型不兼容:找到的群集:FeatureVector
如果有帮助,这是我应该达到的要求和输出:
Cluster c;
c = new Cluster(10);
c.add(new FeatureVector("A", new double[] { 0.0, 0.0 }));
c.add(new FeatureVector("B", new double[] { 1.0, 1.0 }));
c.add(new FeatureVector("C", new double[] { 1.0, 0.0 }));
c.add(new FeatureVector("D", new double[] { 2.0, 0.0 }));
FeatureVector.setVerbose(true);
System.out.println(c);
上面的语句将在控制台上显示以下内容:
Cluster: {A: {0.0, 0.0}, B: {1.0, 1.0}, C: {1.0, 0.0}, D: {2.0, 0.0}}
如果需要更多信息,请告诉我。
太感谢了!这个论坛是一个启示。:)
在add(FeatureVector示例)中,将FeatureVector类的对象存储在数组featureV中
public boolean add (FeatureVector examples){
[...]
featureV[currentPosition+1]=examples;
[...]
}
为此,FeatureV必须是FeatureVector []类或FeatureVector []的超类。
但是,在第二个片段中声明变量featureV时,则将其声明为Cluster []
class Cluster{
private Cluster [] featureV;
除非FeatureVector扩展了Cluster(在这种情况下可能没有任何意义),否则FeatureV的类型不适合FeatureVector。您需要将featureV的类型更改为FeatureVector []
class Cluster{
private FeatureVector [] featureV;
为了更简单一点,让我们将类类型和变量名称更改为其他名称:
class FruitBasket {
private FruitBasket [] fruits;
public boolean add (Fruit examples){
fruits[currentPosition+1]=examples;
}
}
因此,现在我们有了一个FruitBasket类,其中FruitBasket类的每个对象都包含一个FruitBaskets数组。因此,我们有一定数量的可以安装FruitBaskets的插槽。现在,在添加方法中,您选择“水果”,然后尝试将其挤压到“水果篮”插槽中。您知道为什么这行不通吗?您只能将兼容的对象从一个对象投射到另一个对象。因此,当您在使用水果时可以使用苹果或橙子,但在使用FruitBaskets时则不能使用水果。
因此,您要做的是:
class FruitBasket {
private Fruit [] fruits;
public boolean add (Fruit examples){
fruits[currentPosition+1]=examples;
}
}
这可能就是您想要的。这个FruitBasket现在有一定数量的Fruits插槽,现在您可以使用add()方法将另一个水果添加到购物篮中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句