3

以下のような多項式を保持するTermというJavaクラスがあります

public Term(int c, int e) throws NegativeExponent {
    if (e < 0) throw new NegativeExponent();
    coef = c;
    expo = (coef == 0) ? 1 : e;
}

私はまた、以下のように同じクラスにequalsメソッドを持っています

@Override
public boolean equals(Object obj) {

}

これらの2つのTermオブジェクトを比較する方法をコーディングする方法に固執しています

JUnitテストファイル内で、以下のテストを使用して、equalsメソッドをテストしています。

import static org.junit.Assert.*;

import org.junit.Test;

public class ConEqTest
{
    private int min = Integer.MIN_VALUE;
    private int max = Integer.MAX_VALUE;



@Test
public void eq01() throws TError { assertTrue(new Term(-10,0).equals(new Term(-10,0))); }

@Test
public void eq02() throws TError { assertTrue(new Term(0,0).equals(new Term(0,2))); }
4

2 に答える 2

5

どうしたの

@Override
public boolean equals(Object obj) {
    if (! (obj instanceof Term))
        return false;
    Term t = (Term)obj;
    return coef == t.coef && expo == t.expo; 
}
于 2012-11-16T00:52:31.373 に答える
1
import static org.junit.Assert.*;
import org.junit.*;
@SuppressWarnings("serial") class NegativeExponentException extends Exception {}
class Term {
    @Override public int hashCode() {
        final int prime=31;
        int result=1;
        result=prime*result+coefficient;
        result=prime*result+exponent;
        return result;
    }
    @Override public boolean equals(Object obj) {
        if(this==obj)
            return true;
        if(obj==null)
            return false;
        if(getClass()!=obj.getClass())
            return false;
        Term other=(Term)obj;
        if(coefficient!=other.coefficient)
            return false;
        if(exponent!=other.exponent)
            return false;
        return true;
    }
    public Term(int c,int e) throws NegativeExponentException {
        if(e<0)
            throw new NegativeExponentException();
        coefficient=c;
        exponent=(coefficient==0)?1:e;
    }
    int coefficient,exponent;
}
public class So13408797TestCase {
    @Test public void eq01() throws Exception {
        assertTrue(new Term(-10,0).equals(new Term(-10,0)));
    }
    @Test public void eq02() throws Exception {
        assertTrue(new Term(0,0).equals(new Term(0,2)));
    }
    private int min=Integer.MIN_VALUE;
    private int max=Integer.MAX_VALUE;
}
于 2012-11-16T04:45:31.717 に答える