import java.util.*; public class Term { final char op; final Element arg1, arg2; Term(char op, Element arg1, Element arg2) { this.op = op; this.arg1 = arg1; this.arg2 = arg2; } Term(char variable) { this.op = variable; this.arg1 = null; this.arg2 = null; } Term(String s, ModLattice l) throws NumberFormatException /* This constructor is intended only for reading a lattice from a file. */ { StringTokenizer st = new StringTokenizer(s); try { if (st.countTokens() == 3) { arg1 = l.elements[Integer.parseInt(st.nextToken())]; op = st.nextToken().charAt(0); arg2 = l.elements[Integer.parseInt(st.nextToken())]; } else { op = st.nextToken().charAt(0); arg1 = null; arg2 = null; } } catch (NullPointerException ex) { throw new NumberFormatException(); } } public boolean equals(Term x) { if (this.op == x.op) if ((this.arg1 == x.arg1 && this.arg2 == x.arg2) || (this.arg1 == x.arg2 && this.arg2 == x.arg1)) return true; else return false; else return false; } public String toString() { if (op == 'v' || op == '^') return (arg1.myNumber + " " + op + " " + arg2.myNumber); else return (op + ""); } } //class Term