2014-12-02, 16:57
  #25
Medlem
Citat:
Ursprungligen postat av kinesarsle
Nej, och nu börjar det se ut som att du frågar mig av ren bekvämlighet. Kör programmet. Jag kan se direkt att if(n>n*n) är helt felaktigt för det kommer alltid att vara falskt om man bortser från fel från overflow, men om du inte bemödar dig med att tänka igenom vad du gör och att köra programmet ser jag ingen som helst anledning att sitta och felsöka. Om programmet fungerar är det rätt. Annars inte.

Här har du ett exempel på kod med en klass som innehåller ett test för att testa sig själv. Kör den koden. Sedan tar du bort hela testfallet som är markerat och kör igen.

Kod:
// TestExample.java                                                                                                                  

// En punkt i rummet                                                                                                                 
class Point
{
    // Punktens koordinater                                                                                                          
    private final double x,y;

    public Point(double x, double y)
    {
        this.x=x;
        this.y=y;
    }

    public double distanceToOrigo()
    {
        return Math.sqrt(x*x+y*y);
    }

    public double distanceToPoint(Point point)
    {
        double dx=x-point.x;
        double dy=y-point.y;
        return Math.sqrt(dx*dx+dy*dy);
    }

    // Sundhetstest. Ordentliga tester bör vara mer heltäckande, men                                                                 
    // om de här testerna inte passeras är något allvarligt fel.                                                                     
    public static boolean test()
    {
        boolean passed = true;

        Point point1 = new Point(1.0, 0.0);
        Point point2 = new Point(-3.0, -4.0);
        if(point1.distanceToOrigo() != 1.0 ||
           point2.distanceToOrigo() != 5.0)
            {
                System.out.println("ERROR : Point.distanceToOrigo");
                passed = false;
            }

        Point point3 = new Point(-1.0, 0.0);

        if(point1.distanceToPoint(point3) != 2.0)
            {
                System.out.println("ERROR : Point.distanceToPoint");
                passed = false;
            }

        // Felaktigt testfall för att visa poängen. Ta bort det här så                                                               
        // passerar programmet testet.                                                                                               
        if(point1.distanceToOrigo() != 666.0)
            {
                System.out.println("ERROR!");
                passed = false;
            }
        // Ta bort hit ned                                                                                                           

        return passed;
    }
}

public class TestExample
{
    public static void main(String[] args)
    {
        if(Point.test())
            System.out.println("   OK");
    }
}

Okej men hela uppgiften känns riktigt skum så och syftet är luddigt men den så tror jag ska skippa den och göra någon uppgift som är mer vettig och som kan ge något.
Citera
  • 2
  • 3

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Det är enkelt att registrera ett nytt konto

Bli medlem

Logga in

Har du redan ett konto? Logga in här

Logga in