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