toString Methods

Our printing in the last program was quite stilted because we needed to break a complex number into its real and imaginary parts, print them, and then put it all back together again. Wouldn’t it be nice if we could just write:

System.out.println(u);

instead? It turns out we can. All objects have a toString method which is inherited from the Object class. However the default toString() method isn’t very useful so we want to override it with one of our own creation that handles the conversion to complex numbers. Add the following method to the Complex class:

public String toString() {

if (v >= 0) return (String.valueOf(u) + ” + ” + String.valueOf(v) + “i”);
else return (String.valueOf(u) + ” – ” + String.valueOf(-v) + “i”);
}

You should also modify the ComplexExamples class as follows:

class ComplexExamples {

public static void main (String args[]) {

Complex u, v, z;

u = new Complex(1,2);
System.out.println(”u: ” + u);
v = new Complex(3,-4.5);
System.out.println(”v: ” + v);

// Add u + v;
z=u.Plus(v);
System.out.println(”u + v: ” + z);
// Add v + u;
z=v.Plus(u);
System.out.println(”v + u: ” + z);

z=u.Minus(v);
System.out.println(”u – v: ” + z);
z=v.Minus(u);
System.out.println(”v – u: ” + z);

z=u.Times(v);
System.out.println(”u * v: ” + z);
z=v.Times(u);
System.out.println(”v * u: “+ z);

z=u.DivideBy(v);
System.out.println(”u / v: ” + z);
z=v.DivideBy(u);
System.out.println(”v / u: ” + z);

}

}

That’s about an order of magnitude easier to understand and to write.

Comments are closed.