Permalänk

Java förståelse av lösning

Hej!

Behöver lite hjälp med en kod som jag inte kan förstå, detta är nybörjarnivå av java.

public class AirportDataBase { private ArrayList<Airport> airports; /** Skapar en tom flygplatsdatabas. */ public AirportDatabase () { airports = new ArrayList<Airport>(); } /** Ger den flygplats som ligger närmast en given flygplats (airport). Flygplatsen själv räknas naturligtvis inte in. */ public Airport findClosest(Airport airport) { Airport closest = null; double closestDist = Double.MAX_VALUE; for (int i = 0; i < airports.size(); i++) { Airport a = airports.get(i); if (!a.getId().equals(airport.getId()) && airport.getDistanceTo(a) < closestDist) { closest = a; closestDist = airport.getDistanceTo(a); } } return closest; }

Jag undrar då hur MAX_VALUE funkar, jag förstår att vi får största värdet. Men när vi kommer in i if satsen där vi ser till att flygplatsen i arraylisten som vi går igenom i for loopen har mindre avstånd än MAX_VALUE, men min fråga är då kommer inte alla flygplatser gå igenom kraven för den if-satsen. Vi vill ju ta reda på flygplatsen som är närmst , men nu ser det ju ut som om vilken flygplats som helst kommer returneras då avståndet till alla flygplaster är mindre än MAX_VALUE.

Givetvis tänker jag fel men jag kan inte förstå hur vi kan få närmsta flygplats genom att använda MAX_VALUE.
Detta är lösningen på en uppgift.

Tack på förhand om ni kan ta er tid att hjälpa mig och förstå .

la till code-taggar
Permalänk
Hedersmedlem

har redigerat ditt inlägg och lagt till code-taggar, [code][/code].

Om du kollar i if-satsen så ser du även att variabeln closestDist får ett nytt värde från airport.getDistanceTo(a). Då kommer _inte_ nästa flygplats att bli jämförd med Double.MAX_VALUE

Permalänk
Skrivet av lass3kongo:

Hej!
Jag undrar då hur MAX_VALUE funkar, jag förstår att vi får största värdet. Men när vi kommer in i if satsen där vi ser till att flygplatsen i arraylisten som vi går igenom i for loopen har mindre avstånd än MAX_VALUE, men min fråga är då kommer inte alla flygplatser gå igenom kraven för den if-satsen. Vi vill ju ta reda på flygplatsen som är närmst , men nu ser det ju ut som om vilken flygplats som helst kommer returneras då avståndet till alla flygplaster är mindre än MAX_VALUE.

Mycket riktigt kommer alla flygplatser att ha ett avstånd mindre än Double.MAX_VALUE. Vad du missar att ta med i din tankegång är att closestDist inte längre innehåller Double.MAX_VALUE efter att första flygplatsen kollats.

Permalänk

Tack så mycket för hjälpen!

Permalänk
Inaktiv

För att göra det ännu lättare att förstå hade man ju gjort på motsvarande sätt för att hitta flygplatsen längst bort. Där hade man ju gett sin variabel värdet 0 i början, då flygplatsen som ligger längst bort troligtvis kommer ligga längre bort än 0

Permalänk

Haha det här känner jag igen, skrev en programmeringstenta i Java på LTH för ett par år sedan som handlade just om flygplatser och aska i luften, är 99% säker på att uppgiften är därifrån Vill för övrigt minnas att jag tyckte att det var en rolig tenta!