0

I wrote a program for class, The problem I believe is when I'm testing the other class.

Here are links to ideone.com I pasted from.

https://ideone.com/UB7x87 -

https://ideone.com/watbZq - tester

 import static java.lang.Math.sqrt;


 public class ThreePoints {

    float x0;
    float y0;
    float x1;
    float y1;
    float x2;
    float y2;


    public ThreePoints(){
        this.x0 = 0;
        this.y0 = 0;
        this.x1 = 0;
        this.y1 = 0;
        this.x2 = 0;
        this.y2 = 0;

    }
    public ThreePoints(float x0, float y0, float x1, float y1, float x2, float y2){
        this.x0 = x0;
        this.y0 = y0;
        this.x1 = x1;
        this.y1 = y1;
        this.x2 = x2;
        this.y2 = y2;
    }
    public double getLength(int side){


     if(side == 0 && isTriangle()){
         return Math.sqrt((x2-x1) * (x2-x1) + (y2-y1) * (y2-y1));
     } else if (side == 1 && isTriangle()){
         return Math.sqrt((x2-x0) * (x2-x0) + (y2-y0) * (y1-y0));
     } else if (side == 2 && isTriangle()){
         return Math.sqrt((x1-x0) * (x1-x0) + (y1-y0) * (y1-y0)); 
     }else{ return 0;

     }
     }
    public double getAngle(int vertex){

            if(vertex == 0 && isTriangle()) {
  double angle = Math.acos((-Math.pow(this.getLength(0),2)
                +Math.pow(this.getLength(1),2)
                +Math.pow(this.getLength(2),2))
                /(2*this.getLength(1)*this.getLength(2)));
                return angle;
           } else if(vertex == 1 && isTriangle()) {
  double angle = Math.acos((Math.pow(this.getLength(0),2)- Math.pow(this.getLength(1),2)
                +Math.pow(this.getLength(2),2))/
                (2*this.getLength(0)*this.getLength(2)));
                return angle;
           } else if(vertex == 2 && isTriangle()){
  double angle = Math.acos((Math.pow(this.getLength(0),2)
                 +Math.pow(this.getLength(1),2)- Math.pow(this.getLength(2),2)) /(2*this.getLength(0)*this.getLength(1)));
                 return angle;
           } else {
                 return 0;
                   }


           }
    public boolean isTriangle(){

 if (!(x0 * (y1-y2) + x1 * (y2-y0) + x2 * (y0-y1) == 0)){
     return true;
 } 
     return false;
    }
    public boolean isEquilateral(){
          if (getLength(0) != getLength(1))
              return false;
          if (getLength(0) != getLength(2))
              return false;
          if (getLength(1) != getLength(2))
              return false;
          return true;
    }
    public boolean isIsosceles(){
        if (getLength(0) == getLength(1))
            return true;
        if (getLength(0) == getLength(2))
            return true;
        if (getLength(1) == getLength(2))
            return true;
        return false;

    }
    public boolean isScalene(){
        if (getLength(0) == getLength(1))
            return true;
        if (getLength(0) == getLength(2))
            return true;
        if (getLength(1) == getLength(2))
            return true;
        return false;
    }
    public boolean isAcute(){
        if (getAngle(0) < 90 && getAngle(1) < 90 && getAngle(2) < 90){
            return true;
        }
        return false;
    }
    public boolean isObtuse(){
        if (getAngle(0) > 90 && getAngle(1) > 90 && getAngle(2) > 90){
            return true;
        }      
        return false;
    }
    public double getPerimeter(){
        double perimeter;
        perimeter = (getLength(0) + getLength(1) + getLength(2));
        return perimeter;
    }
    public boolean isRight(){
    if (getAngle(0) == 90 && getAngle(1) == 90 && getAngle(2) == 90){
    return true;
    }
    return false;
    }
    public double getArea(){
    double s = ((getLength(0) + getLength(1) + getLength(2))/2);    
    double area = sqrt(s * (s-getLength(0))*(s-getLength(1))*(s-getLength(2)));

        return area;
    }
    private boolean approxEqual (double x, double y) {
        return Math.abs(x - y) <= 1E-12;
    }
    }

And here is the tester class

      public class ThreePointsTester {
  public static void main(String[] args) {

   ThreePoints tp = new ThreePoints();

   double tpAngle0 = tp.getAngle(0);
   double tpAngle1 = tp.getAngle(1);
   double tpAngle2 = tp.getAngle(2);

System.out.println("tp angle 0 is " + tpAngle0);
System.out.println("tp angle 1 is " + tpAngle1);
System.out.println("tp angle 2 is " + tpAngle2);

    double tpLength0 = tp.getLength(0); 
   double tpLength1 = tp.getLength(1); 
   double tpLength2 = tp.getLength(2);

System.out.println("tp side 0 is " + tpLength0);
System.out.println("tp side 1 is " + tpLength1);
System.out.println("tp side 2 is " + tpLength2);

tp.isTriangle();
tp.isEquilateral();
tp.isIsosceles();
tp.isScalene();
tp.isAcute();
tp.isObtuse();
tp.isRight();

----------------------------------------------*

  ThreePoints tp2 = new ThreePoints(3.32, 2.32, 2.12, 4.54, 5.43, 4.23);

  double tpAngle0 = tp2.getAngle(0);
  double tpAngle1 = tp2.getAngle(1);
  double tpAngle2 = tp2.getAngle(2);

  System.out.println("tp2 angle 0 is " + tpAngle0);
  System.out.println("tp2 angle 1 is " + tpAngle1);
  System.out.println("tp2 angle 2 is " + tpAngle2);

    double tpLength0 = tp2.getLength(0); 
   double tpLength1 = tp2.getLength(1); 
   double tpLength2 = tp2.getLength(2);

  System.out.println("tp2 side 0 is " + tpLength0);
  System.out.println("tp2 side 1 is " + tpLength1);
  System.out.println("tp2 side 2 is " + tpLength2);

tp2.isTriangle();
tp2.isEquilateral();
tp2.isIsosceles();
tp2.isScalene();
tp2.isAcute();
tp2.isObtuse();
tp2.isRight();






 }

 }

see --------------------------

When I try to create that object, Java is giving me an error. I'm still fairly new to Java, so I'm just trying to understand what I'm doing wrong. Also my boolean methods don't seem to be printing true or false?

Kakarot
  • 4,252
  • 2
  • 16
  • 18
Frightlin
  • 161
  • 1
  • 2
  • 14
  • 5
    what error are you getting ? – Kakarot Feb 26 '14 at 23:05
  • Methods don't print anything unless they have a statement that prints something. These methods return `true` or `false`, but you're just throwing out the result. Try `System.out.println("isTriangle = " + tp.isTriangle())` or something like that. – ajb Feb 26 '14 at 23:09
  • "Giving me an error" is not an error description. Java produces some pretty good error messages. Copy the messages here (edit your original post and paste them in), and indicate which line is identified by the message. – Hot Licks Feb 26 '14 at 23:18

2 Answers2

2

Try this.

new ThreePoints(3.32f, 2.32f, 2.12f, 4.54f, 5.43f, 4.23f)

Such number literals are doubles by default.
You need to add an f to make them floats explicitly.

Not sure how you tested the boolean methods
provided your code does not compile.

peter.petrov
  • 38,363
  • 16
  • 94
  • 159
0

It looks like you're duplicating your variables here (tpAngleX and tpLengthX):

double tpAngle0 = tp.getAngle(0);
double tpAngle1 = tp.getAngle(1);
double tpAngle2 = tp.getAngle(2);

...

double tpAngle0 = tp.getAngle(0);
double tpAngle1 = tp.getAngle(1);
double tpAngle2 = tp.getAngle(2);

If you want to re-use your variable in the same method, you only need to declare it once:

double tpAngle0 = tp.getAngle(0);

...

tpAngle0 = tp.getAngle(0);
Justin Jasmann
  • 2,363
  • 2
  • 14
  • 18