Diskuze: Iterace 02
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Zobrazeno 4 zpráv z 4.
//= Settings::TRACKING_CODE_B ?> //= Settings::TRACKING_CODE ?>
V předchozím kvízu, Online test znalostí Java, jsme si ověřili nabyté zkušenosti z kurzu.
Vždyť to počítáš jenom s jedním bodem 
 Ten druhý bod je přece ten point
co tam máš jako parametr té funkce, k jeho souřadnicím přistoupíš ve
funkci distance pomocí
point.getX();
point.getY();
takže celý ten výpočet vzdálenosti by měl vypadat nějak takto:
dist = Math.sqrt((Math.pow(point.getX()-this.getX(),2) + (point.getY()-this.getY(),2))
(nezkoušel jsem to, tak je možné že tam mám chaos v závorkách, ale myslím, že pro pochopení to stačí)
						Díky moc. Už mi to funguje. Ale sekl jsem se dál -.-
package cz*;
/**
 *
 * @author Tomas Bednar
 */
public class Triangle {
    private final Vertex2D a;
    private final Vertex2D b;
    private final Vertex2D c;
    private boolean divide = false;
    private Triangle subA = null;
    private Triangle subB = null;
    private Triangle subC = null;
    /**
     * Set vertices triangle
     * @param a side a
     * @param b side b
     * @param c side c
     */
    public Triangle(Vertex2D a, Vertex2D b, Vertex2D c) {
        this.a = a;
        this.b = b;
        this.c = c;
    }
    /**
    * Check if triangle was divided to sub triangle
    * @return  If triangle was divided then return true else false
    */
    public boolean isDivided() {
        return(divide);
    }
    /**
     * Check the number i and if was divided, then return tuple of sub triagle
     * @param i number of sub triangle (0 - 2)
     * @return sub triangle
     */
    public Triangle getSubTriangle(int i) {
        if(isDivided()){
            switch(i) {
                case 0: return subA;
                case 1: return subB;
                case 2: return subC;
                default: return null;
            }
        }
        return null;
    }
    /**
     * From big triangle count three sub triangles and sets them vertices
     * @return true or false depend if triangle was divided to sub triangle
     */
    public boolean divide() {
        if(isDivided()) {
            return false;
        } else {
            Vertex2D middleOfAB = new Vertex2D(((a.getX() + b.getX()) / 2), ((a.getY() + b.getY()) / 2));
            Vertex2D middleOfAC = new Vertex2D(((a.getX() + c.getX()) / 2), ((a.getY() + c.getY()) / 2));
            Vertex2D middleOfBC = new Vertex2D(((b.getX() + c.getX()) / 2), ((b.getY() + c.getY()) / 2));
            subA = new Triangle(a, middleOfAB, middleOfAC);
            subB = new Triangle(middleOfAB, b, middleOfBC);
            subC = new Triangle(middleOfAC, middleOfBC, c);
            divide = true;
            return true;
        }
    }
    public Vertex2D getVertexA() {
        return a;
    }
    public Vertex2D getVertexB() {
        return b;
    }
    public Vertex2D getVertexC() {
        return c;
    }
    /**
     * Check if triangle is equilateral
     * @return true if is equilateral or false
     */
    public boolean isEquilateral() {
        double pointA;
        double pointB;
        double pointC;
        pointA = a.getX() + a.getY();
        pointB = b.getX() + b.getY();
        pointC = c.getX() + c.getY();
        if(Math.abs(pointA - pointB) < 0.001 && Math.abs(pointA - pointC) < 0.001 && Math.abs(pointB - pointC) < 0.001) {
           return true;
        }
        return false;
    }
    @Override
    public String toString() {
        return "Triangle: vertices=" + getVertexA() + " " + getVertexB() + " " + getVertexC();
    }
}
// Test
    @Test public void task02() {
        Triangle tri = new Triangle(new Vertex2D(-1,0), new Vertex2D(1,0), new Vertex2D(0,1));
        assertTrue("Konstruktor Triangle", tri.getVertexA().getX() == -1.0 && tri.getVertexA().getY() == 0.0);
        BasicRulesTester.testRedundantMethod(Triangle.class, "setVertexA", Vertex2D.class);
        BasicRulesTester.testRedundantMethod(Triangle.class, "setVertexB", Vertex2D.class);
        BasicRulesTester.testRedundantMethod(Triangle.class, "setVertexC", Vertex2D.class);
        assertTrue("isEquilateral()", new Triangle(new Vertex2D(-1.2, 0), new Vertex2D(1.2, 0), new Vertex2D(0, 2.07846097)).isEquilateral());
        assertFalse("isEquilateral()", new Triangle(new Vertex2D(-1.2, 0), new Vertex2D(1.2, 0), new Vertex2D(0, 5.0)).isEquilateral());
        try {
            Triangle ntri = new Triangle(null, null, null);
            assertEquals("toString vraci spatny vystup pokud je nektery z vrcholu prazdny", "INVALID TRIANGLE", ntri.toString());
        } catch(NullPointerException ex) {
            fail("toString neosetruje situaci, kdy je nektery z vrcholu prazdny");
        }
    }
V testování, jestli je trojúhelník rovnostranný. Jelikož jsou čísla reálná nejde použit ==, ale přes math.abs .. jenže, když to zkompiluji tak mi to vypíše error, ale nenapíše, kde přesně.
Zobrazeno 4 zpráv z 4.
				