0

我有两个 wekaInstances课程。我试图识别一个与另一个属性同名的属性。但是,使用:

if (testing.attribute(i).name() == training.attribute(j).name())

提高False每个属性。这是每个的 arff 文件。如您所见,两者都包含attr1attr2attr3

@relation SampleTrain3Attributes
@attribute attr1 numeric
@attribute attr2 {a,b,c}
@attribute attr3 numeric
@data
1,a,2
3,b,4
5,c,6
7,a,8

@relation SampleTest5Attributes
@attribute attr1 numeric
@attribute attr2 {a,b,c}
@attribute attr3 numeric
@attribute attr4 {d,e,f}
@attribute attr5 numeric
@data
1,a,2,d,3
3,b,4,f,4
5,c,6,e,8
7,a,8,d,9

任何见解将不胜感激。谢谢!

4

2 回答 2

1

Attribute.name()返回一个String。比较Strings using==时,您是在比较引用。一般来说,只有当引用相同时才会产生 true,即,指向完全相同的对象。如果要检查它们是否具有相同的内容,请使用String.equals(),即,

if (testing.attribute(i).name().equals(training.attribute(j).name()))
于 2013-02-27T13:51:03.167 回答
1

您需要比较字符串本身,而不是对它们的引用——

if (testing.attribute(i).name().equals(training.attribute(j).name()))
于 2013-02-27T13:35:47.310 回答