import java.io.*; //------------------------------------------------------------------- // Program P2 Q3 // // This program defines a class called Triangle, prompts the user for // the length of the sides of the triangle, and prints out the property // of the triangle. // // Author : Wei Tsang Ooi // Date : 11 July 1999 //------------------------------------------------------------------- //------------------------------------------------------------------- // class Triangle // // This class contains three fields, side1, side2, and side3, that // represent the length of the sides of a triangle. It also contains // a set of methods the test the properties of this triangle. //------------------------------------------------------------------- class Triangle { private double side1, side2, side3; // the length of the sides of // the triangle. //--------------------------------------------------------------- // constructor // // input : the length of the three sides of the triangle. //--------------------------------------------------------------- public Triangle(double side1, double side2, double side3) { this.side1 = side1; this.side2 = side2; this.side3 = side3; } //--------------------------------------------------------------- // isRight // // returns : true if and only if this triangle is a right triangle. //--------------------------------------------------------------- boolean isRight() { double square1 = side1*side1; double square2 = side2*side2; double square3 = side3*side3; if ((square1 == square2 + square3) || (square2 == square1 + square3) || (square3 == square1 + square2)) return true; else return false; } //--------------------------------------------------------------- // isValid // // returns : true if and only if this triangle is a valid triangle. //--------------------------------------------------------------- boolean isValid() { if ((side1 + side2 < side3) || (side1 + side3 < side2) || (side2 + side3 < side1)) return false; else return true; } //--------------------------------------------------------------- // isEquilateral // // returns : true if and only if all three sides of this triangle // are of the same length. //--------------------------------------------------------------- boolean isEquilateral() { if (side1 == side2 && side2 == side3) return true; else return false; } //--------------------------------------------------------------- // isIsosceles // // returns : true if and only if exactly two sides of this triangle // has the same length. //--------------------------------------------------------------- boolean isIsosceles() { if ((side1 == side2 && side2 != side3) || (side1 == side3 && side2 != side3) || (side2 == side3 && side1 != side3)) return true; else return false; } //--------------------------------------------------------------- // isIsosceles // // returns : true if and only if exactly no two sides of this // triangle has the same length. //--------------------------------------------------------------- boolean isScalene() { if (side1 == side2 || side2 == side3 || side1 == side3) return false; else return true; } } //------------------------------------------------------------------- // class TriangleProperty // // This class is the main class of this application. It prompts // the user for input to construct a triangle, then prints out // the special properties of the triangle. //------------------------------------------------------------------- public class TriangleProperty { //--------------------------------------------------------------- // getInput // // input : stdin - BufferedReader to read input from // msg - message to prompt the user with // returns : a double value input by user, guranteed to be // greater than zero. //--------------------------------------------------------------- private static double getInput(BufferedReader stdin, String msg) throws IOException { System.out.print(msg); double input = Double.valueOf(stdin.readLine()).doubleValue(); while (input <= 0) { System.out.println("ERROR : length of the side of triangle must " + "be a positive number."); System.out.print(msg); input = Double.valueOf(stdin.readLine()).doubleValue(); } return input; } //--------------------------------------------------------------- // printProperties // // input : triangle - a Triangle object // print out the properties of this triangle. //--------------------------------------------------------------- private static void printProperties(Triangle triangle) { // We first check if this is a valid triangle. If not // we simply returns. if (!triangle.isValid()) { System.out.println("This is not a valid triangle."); return; } // Check for right/equilateral/isosceles/scalene triangles // Note that a triangle can be both right triangle and isosceles // or both right triangle and scalene. if (triangle.isRight()) System.out.println("This is a right triangle."); if (triangle.isEquilateral()) System.out.println("This is an equilateral triangle."); else if (triangle.isIsosceles()) System.out.println("This is an isosceles triangle."); else // we do not need to call isScalene here because a triangle // is either equilateral/isosceles or scalene. System.out.println("This is an scalene triangle."); } //--------------------------------------------------------------- // main // // Get the length of the sides of a triangle from user, then // print out the properties of the triangle. //--------------------------------------------------------------- public static void main(String args[]) throws IOException { BufferedReader stdin = new BufferedReader (new InputStreamReader(System.in)); double side1 = getInput(stdin, "What is the length of the first side of your triangle? "); double side2 = getInput(stdin, "What is the length of the second side of your triangle? "); double side3 = getInput(stdin, "What is the length of the third side of your triangle? "); System.out.print("Pondering...\n"); printProperties(new Triangle(side1, side2, side3)); } }