Hey guys, I'm making a program that takes 3 sets of coordinates from a user to make a triangle. It then calculates the length of each side, the perimeter of the triangle, the area of the triangle, and the 3 angles. I have it all coded, except for the area and angles, I get a return value of NaN. can anyone explain why this is happening?

public class Triangle
{
   public Triangle(double x, double y, double xa, double ya, double xb, double yb)
   {
       x1 = x;
       x2 = xa;
       x3 = xb;
       y1 = y;
       y2 = ya;
       y3 = yb;
    }
    

    private double x1;
    private double x2;
    private double x3;
    private double y1;
    private double y2;
    private double y3;
    private double A;
    private double B;
    private double C;
    private double perimeter;
    private double area;
    private double angle1;
    private double angle2;
    private double angle3;
    private double S;

    public double getSide1()
    {
        A = Math.sqrt(Math.pow((x1-x2),2)+Math.pow((y1-y2),2));
        return A;
    }
    
    public double getSide2()
    {
        double B = Math.sqrt(Math.pow((x2-x3),2)+Math.pow((y2-y3),2));
        return B;
    }
    
    public double getSide3()
    {
        double C = Math.sqrt(Math.pow((x3-x1),2)+Math.pow((y3-y1),2));
        return C;
    }
    
        double AA = Math.pow(A, 2);
        double BB = Math.pow(B, 2);
        double CC = Math.pow(C, 2);
    
    public double getPerimeter()
    {
        perimeter = (A + B + C);
        return perimeter;
    }
    
    public double getS()
    {
        S = (perimeter * 0.5);
        return S;
    }
    
    
    public double getArea()
    {
        area = (Math.sqrt(S*(S-A)*(S-B)*(S-C)));
        return area;
    }

    public double getAngle1()
    {
        angle1 = Math.acos((BB + CC - AA)/(2*B*C))*(180/Math.PI); //gets the angle in radians and converts to degrees
        return angle1;
    }
    
    public double getAngle2()
    {
        angle2 = Math.acos((AA + CC - BB)/(2*A*C))*(180/Math.PI);
        return angle2;
    }
    
    public double getAngle3()
    {
        angle3 = Math.acos((AA + BB - CC)/(2*B*A))*(180/Math.PI);
        return angle3;
    }
    
}
import java.util.Scanner;
public class TriangleSimulator
{
    public static void main(String[] args)
    {
        Scanner in = new Scanner(System.in);
        

        System.out.println("Please enter the first x coordinate:");
        double x1 = in.nextDouble();
        
        System.out.println("Please enter the first y coordinate:");
        double y1 = in.nextDouble();
        
        System.out.println("Please enter the second x coordinate:");
        double x2 = in.nextDouble();
        
        System.out.println("Please enter the second y coordinate:");
        double y2 = in.nextDouble();
        
        System.out.println("Please enter the third x coordinate:");
        double x3 = in.nextDouble();
        
        System.out.println("Please enter the third y coordinate:");
        double y3 = in.nextDouble();
        
        Triangle tri = new Triangle(x1, y1, x2, y2, x3,  y3);
         
        System.out.println("Side 1 is: " + tri.getSide1());
        System.out.println("Side 2 is: " + tri.getSide2());
        System.out.println("Side 3 is: " + tri.getSide3());   
        System.out.println("The perimeter is: " + tri.getPerimeter());    
        System.out.println("The area is: " + tri.getArea());  
        System.out.println("Angle 1 is: " + tri.getAngle1());  
        System.out.println("Angle 2 is: " + tri.getAngle2());   
        System.out.println("Angle 3 is: " + tri.getAngle3());   
    }
}

Recommended Answers

All 2 Replies

NaN. Read the section on "How NaN is created", step through your code a single method at a time and it should be pretty easy. Use a debugger; a slick one which comes with Eclipse or a primitive command line debugger like "jdb" should do the job.

commented: NaN - more than just an elderly female relative :) +29

solved, thanks

Be a part of the DaniWeb community

We're a friendly, industry-focused community of developers, IT pros, digital marketers, and technology enthusiasts meeting, networking, learning, and sharing knowledge.