A solution to problem 6.18 along with some code to test if the methods are written correctly.
First, a class containing main.
public class Main { public static void main(String[] meow) { Line a = new Line(-2, 1.5); Line b = new Line(0, 1, 2, 2); Line c = new Line(1, 3, -2); Line d = new Line(4); Line e = new Line(-2, 5); System.out.println(b.getSlope() + " " + b.getIntercept()); System.out.println(a.isParallel(b)); // false System.out.println(a.isParallel(c)); // true System.out.println(a.isPerpendicular(b)); // m1=-2, m2=.5 System.out.println(a.equals(b)); // false System.out.println(e.equals(c)); // true } }Now, the Line class.
public class Line { private double m; // slope private double b; // y-intercept private boolean isVertical = false; private double k; // Assume that for all constructors except the // single input constructor (i.e., x = k), there // will be no division by zero (i.e., x1 != x2). // Given m, b public Line(double m, double b) { this.m = m; this.b = b; } // Given a point and slope, find the y-intercept public Line(double x1, double y1, double m) { this.m = m; b = y1 - (m*x1); } // Given two points, must find slope and y-intercept public Line(double x1, double y1, double x2, double y2) { m = (y2-y1)/(x2-x1); b = y1 - (m*x1); } // x = k public Line(double k) { isVertical = true; this.k = k; } public double getSlope() { return m; } public double getIntercept() { return b; } public boolean isParallel(Line l2) { if (isVertical && l2.isVertical) return true; else if (isVertical || l2.isVertical) return false; else return (m == l2.m); } public boolean isPerpendicular(Line l2) { if (isVertical && !(l2.isVertical)) return (l2.m == 0); else if (!(isVertical) && l2.isVertical) return (m == 0); else if (!(isVertical) && !(l2.isVertical)) return (m * l2.m == -1); else return false; } public boolean equals(Line l2) { return ((isVertical && l2.isVertical && k == l2.k) || (!(isVertical) && !(l2.isVertical) && m == l2.m && b == l2.b)); } }