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));
}
}