0

私は2つのwekaInstancesクラスを持っています。一方の属性を、もう一方の属性と同じ名前で識別しようとしています。ただし、以下を使用します。

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

Falseすべての属性に対して発生します。それぞれのarffファイルは次のとおりです。ご覧のとおり、両方に、、、およびが含まれてattr1attr2ますattr3

@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

文字列への参照ではなく、文字列自体を比較する必要があります-

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

Attribute.name()を返しますStringStringを使用してsを比較する場合==、参照を比較しています。一般に、これは、参照が同一である場合、つまりまったく同じオブジェクトを指している場合にのみtrueになります。内容が同じかどうかを確認したい場合は、以下を使用してくださいString.equals()

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