# Area, Perimeter and Type of a Triangle.

Problem Statement: Given 3 sides of a triangle, find the area, perimeter and determine the type of the triangle, if isosceles, equilateral, or scalene. Also, check for Right Angled Triangle. /*Skipping Acute and Obtuse triangle types.*/

Prompt 3 user inputs for sides of the triangle and a dialog to output.

Solution:

```import javax.swing.JOptionPane;

public class Triangle {

/**
* This is a class to determine if the given side lengths form a triangle.
* It lets the user know the type of the triangle based on the given side lengths.
* Also, it gives the Perimeter and Area of the triangle.
* @param args
*/
public static void main(String[] args) {

//		String sideA, sideB, sideC;
double a,b,c;
a = Double.parseDouble(JOptionPane.showInputDialog(null,"Please input side 1 length of the triangle: ", "Triangle Side 1", JOptionPane.QUESTION_MESSAGE));
b = Double.parseDouble(JOptionPane.showInputDialog(null,"Please input side 2 length of the triangle: ", "Triangle Side 2", JOptionPane.QUESTION_MESSAGE));
c = Double.parseDouble(JOptionPane.showInputDialog(null,"Please input side 3 length of the triangle: ", "Triangle Side 3", JOptionPane.QUESTION_MESSAGE));

// For right angled triangle, as per mathematics, square of the hypotenuse is equal to the sum of the squares of the other 2 sides. h^2 = a^2 + b^2 where h is hypotenuse (can be any side a,b,c)
// So we first need to determine the hypotenuse

double h = a > b ? (a > c ? a : c) : (b > c ? b : c);

// Permiter of the triangle
double p = a + b + c, s = p/2;

//Area of triangle
double areaOfTriangle = Math.sqrt(s * (s-a) * (s-b) * (s-c));

// Check to see if the triangle is equilateral -- All sides should be equal
if(a == b && b == c){ // no need to check a == c the value always holds true.
JOptionPane.showMessageDialog(null, "Based on the given sides, the triangle is a equilateral." +
"\nPerimeter of the triangle is " + p +
"\nArea of Triangle is " + areaOfTriangle);
}
// Check to see if the triangle is isosceles -- At least 2 sides should be equal
else if(a == b || b == c || c == a) {
JOptionPane.showMessageDialog(null, "Based on the given sides, the triangle is a isosceles." +
"\nPerimeter of the triangle is " + p +
"\nArea of Triangle is " + areaOfTriangle);
}
// Check to see if the triangle is right angle -- Can be verified if sum of squares of each of the sides is equal to twice the square of the hypotenuse.
//Ex : 3^2 + 4^2 + 5^2 = 2 * h^2 where h is the hypotenuse
else if(Math.pow(h,2) * 2 == Math.pow(a,2) + Math.pow(b,2) + Math.pow(c,2)) {
JOptionPane.showMessageDialog(null, "Based on the given sides, the triangle is a right angled triangle." +
"\nPerimeter of the triangle is " + p +
"\nArea of Triangle is " + areaOfTriangle);
}// Check to see if the triangle is scalene -- no sides should be equal
else if(a != b && b != c && a != c) {
JOptionPane.showMessageDialog(null, "Based on the given sides, the triangle is scalene." +
"\nPerimeter of the triangle is " + p +
"\nArea of Triangle is " + areaOfTriangle);
}
// Check if the triangle is not a triangle
else if(a > b + c || b > a + c || c > a + b ) {
JOptionPane.showMessageDialog(null, "Based on the given sides, the triangle is not a triangle");
}
else {
JOptionPane.showMessageDialog(null, "Based on the given sides, the triangle is a normal triangle." +
"\nPerimeter of the triangle is " + p +
"\nArea of Triangle is " + areaOfTriangle);
}
}```