سؤال

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?

هل كانت مفيدة؟

المحلول

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.

نصائح أخرى

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);
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top