为什么这不起作用? 我不确定除了Formula之外你还需要什么其他信息是由char和一个类型为term的int给出的。
// returns true if f is identical to this Formula
// e.g. terms = {Term('C',2),Term('H',6)} and f = {Term('C',2),Term('H',6)} would return true
// but terms = {Term('C',2),Term('H',6)} and f = {Term('H',6),Term('C',2)} would return false
public boolean identical(Formula f)
{
int fSize = f.getTerms().size();
if(fSize!=terms.size())
{
return false;
}
else
{
for(int j = 0; j < fSize; j++)
{
Term tester = terms.get(j);
Term fTester = f.getTerms().get(j);
if(fTester == tester)
{
continue;
}
else
{
return false;
}
}
}
return true;
}
N.B。 terms是ArrayList的名称
答案 0 :(得分:1)
您需要比较两个不使用==
的对象,而是使用equals
方法,以便对象&#39;内容进行了比较。
由于Term
是您的自定义类,因此您需要自行覆盖此方法:
class Term {
char c; //the two values inside your Term class
int i;
@Override
public boolean equals(Object o){
//checks omitted
Term other = (Term)o;
//now compare the contents:
return i==other.i && c==other.c;
}
}
然后你可以使用
比较它们if(fTester.equals(tester)){
continue;
}
答案 1 :(得分:0)
用于比较Term的两个对象,您需要覆盖Term类中的方法equals()和hashCode()。您的代码将是:
public boolean identical(Formula f)
{
int fSize = f.getTerms().size();
if(fSize!=terms.size()){
return false;
} else {
for(int j = 0; j < fSize; j++){
Term tester = terms.get(j);
Term fTester = f.getTerms().get(j);
if(fTester.equals(tester)){
continue;
}
else {
return false;
}
}
}
return true;
}