import java.io.*; //--------------------------------------------------------------------------------------------- // CS100 P2: Q3 // // Prompts user for the sides of a triangle. Creates an object of class Triangle // from the user's input values, then prints the kind of triangle the values // present. Prints an error message if values are illegal or if they do not // form a valid triangle. // // Author : Alan Renaud (ajr5@cornell.edu) // Date : 9 July 1999 //--------------------------------------------------------------------------------------------- public class TestTriangle { //--------------------------------------------------------------------------------------------- // getInput // // input : a prompt message // return : the value input by user // // Prompts user for input and returns the value input. //--------------------------------------------------------------------------------------------- private static int getInput(String message) { TokenReader in = new TokenReader(System.in); System.out.print(message); System.out.flush(); return in.readInt(); } //--------------------------------------------------------------------------------------------- // // initTriangle // // input : none // return : object of class Triangle initialized by user // // Prompts the user for three triangle sides; returns an instance of class // Triangle initialized by the user's input values. //-------------------------------------------------------------------------------- private static Triangle initTriangle() { int s1 = getInput("What is the length of the first side of your triangle? "); int s2 = getInput("What is the length of the second side of your triangle? "); int s3 = getInput("What is the length of the third side of your triangle? "); Triangle tri = new Triangle(s1, s2, s3); return tri; } //--------------------------------------------------------------------------------------------- // printOutput // // input : object of class Triangle // return : none // // Output to screen the kind of triangle the object's instance variables comprise. //--------------------------------------------------------------------------------------------- private static void printOutput(Triangle tri) { TokenReader in = new TokenReader(System.in); if (tri.isTriangle()) { System.out.print("Pondering.... "); if (tri.isRight()) System.out.println("Your triangle is a right triangle!") ; if (tri.isEquilateral()) System.out.println("Your triangle is equilateral!"); if ((tri.isScalene())&&(!tri.isRight())) System.out.println("Your triangle is scalene!"); if (tri.isIsosceles()) System.out.println("Your triangle is isosceles!"); } in.waitUntilEnter(); } public static void main (String args[]) { Triangle userTri = initTriangle(); printOutput(userTri); } } //--------------------------------------------------------------------------------------------- // // ClassTriangle accepts only integer inputs and contains three instance variables // representing the three sides of a triangle. Triangle has methods isTriangle(), // isRight(), isScalene(), isEquilateral(), isIsosceles() which all return boolean values. // The Triangle constructor prints an error message if the user inputs illegal values. // //--------------------------------------------------------------------------------------------- class Triangle { // the sides of the triangle private int a, b, c; //--------------------------------------------------------------------------------------------- // Constructor // // Returns error message if parameter values are values are illegal (< 0) or invalid // (eg., s1 + s2 < s3). //--------------------------------------------------------------------------------------------- public Triangle (int s1, int s2, int s3) { a = (s1 > 0 ? s1 : 0); b = (s2 > 0 ? s2 : 0); c = (s3 > 0 ? s3 : 0); if (!isTriangle()) System.err.println("Invalid input: Sides do not form a triangle."); } //--------------------------------------------------------------------------------------------- // isTriangle // // input : none // return : triangle lengths comprise a valid triangle? //--------------------------------------------------------------------------------------------- public boolean isTriangle() { return !((a*b*c == 0) || (a + b < c) || (a + c < b) || (b + c < a)); } //--------------------------------------------------------------------------------------------- // isRight // // input : none // return : triangle is a right triangle? //--------------------------------------------------------------------------------------------- public boolean isRight() { return (a*a + b*b == c*c)||(a*a + c*c == b*b)||(b*b + c*c == a*a); } //--------------------------------------------------------------------------------------------- // isScalene // // input : none // return : triangle has no two sides the same length? //--------------------------------------------------------------------------------------------- public boolean isScalene() { return (a != b) && (a != c) ; } //--------------------------------------------------------------------------------------------- // isEquilateral // // input : none // return : triangle has all three sides the same length? //--------------------------------------------------------------------------------------------- public boolean isEquilateral() { return (a==b)&&(b==c); } //--------------------------------------------------------------------------------------------- // isIsosceles // // input : none // return : triangle has exactly two sides the same length? //--------------------------------------------------------------------------------------------- public boolean isIsosceles() { return ((!isScalene())&&(!isEquilateral())); } }