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());   
8 Years
Discussion Span
Last Post by Y2K_MASTER

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.

Votes + Comments
NaN - more than just an elderly female relative :)
This question has already been answered. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.