Jag ser följande fel:
- Ibland blir d1.x - d2.x negativt. Detta är inte trevligt om du upphöjer till ett reellt tal. Du bör ta absolutbeloppet av skillnaden så att du vet att det är positivt.
Detta fel uppstår däremot inte om du kvadrerar (x^2) eftersom tecknet då försvinner. - Du multiplicerar aldrig resultatet med 1.15. Detta gör att den garanterat ger fel svar :)
- Du kan upphöja tal till annat än heltal. Det är tom så Java föredrar att du gör. Java vill nämligen att du skickar med double till pow. Genom att sätta ett d efter tal som en gest till kompilatorn att talen är av typ double.
Sen en kommentar: Du behöver inte ha parenteser ytterst runt ett uttryck.
double Distance(delivery d1, delivery d2)
{
double av = Math.pow(Math.abs(d1.x - d2.x), 1.78d) + Math.pow(Math.abs(d1.y - d2.y), 1.78d);
double distance = 1.15d * Math.pow(av, 0.5617d);
return distance;
}
Tips: Använd gärna kod-taggen på forumet, så ser koden snyggare ut!
