6 svar
54 visningar
popelos 167
Postad: 27 dec 2024 14:08

Java Metoder felsökning

Metoden nedan kompilerar inte. Testa att kompilera koden genom att klicka på "Check". Gå därefter igenom felmeddelandet som ges och försök använda det för att hitta och rätta felet. Syftet med denna uppgift är inte (bara) att rätta felen i koden, utan att vänja dig vid de felmeddelanden som kompilatorn ger. Se därför till att gå igenom felmeddelandet ordentligt innan du rättar felet.

Jag har lyckats lösa några uppgifter sen senast vilket var glädjande nu har jag fastnat igen på en uppgift. Tycker if satserna ser lite konstiga ut med två if och ingen else men kanske kan vara så sen en return i if-sats är det korrekt brukar de inte komma innan eller efter? hur skall jag tänka här? tips! :) 

Peter 1044
Postad: 27 dec 2024 14:17 Redigerad: 27 dec 2024 14:18

Här är det egentligen inget tankefel. Det är bara det att kompilatorn inte verkat inse att alla tänkbara utfall kommer att resultera i antingen den ena eller den andra return-satsen. Kompilatorn tror att man kan hamna på rad 36 utan att ha träffat en return-sats. Det kan man lösa på flera sätt. Jag skulle alltid rekommendera att du löser det så att läsbarheten/tydligheten blir som störst.

Ja, du har rätt i att det ser lite märkligt ut. 

Man behöver bara göra en enda kontroll, om a är >= 0.

Om den är det, så returnera a.

Om den inte är det, måste a vara <0, så returnera -a.

Det kan man lösa med eller utan 'else'. Kompilatorn kanske ger en varning om du använder 'else', men båda varianterna fungerar.

popelos 167
Postad: 27 dec 2024 14:22

Tack det var bra att  vet. Det här verkar va en bra grej att känna till som ofta händer sånt kan tyvärr inte idag. Hur skall man tänka så att det kopplas rätt? står ju "missing return statement" men det finns ju två return!

popelos 167
Postad: 27 dec 2024 14:24

Hmm fick ganska olika svar vad är rimligt antar båda går att göra?

sictransit Online 1172 – Livehjälpare
Postad: 27 dec 2024 14:26 Redigerad: 27 dec 2024 14:27
popelos skrev:

Tack det var bra att  vet. Det här verkar va en bra grej att känna till som ofta händer sånt kan tyvärr inte idag. Hur skall man tänka så att det kopplas rätt? står ju "missing return statement" men det finns ju två return!

Som Peter skriver ovan så är kompilatorn lite korkad. Du och jag ser att antingen händer det ena eller så händer det andra. Det finns inga andra möjligheter. 

Kompilatorn konstaterar bara att if på rad 12 kanske inte är sant, samt att if på rad 14 kanske inte är sant. Om det skulle hända, så tar metoden slut och vi har inte returnerat något. Därav felmeddelandet "missing return statement". 

Nu var det ju rätt enkla villkor, men så är det ju inte alltid. 

Den enkla regeln är att om du har en metod som skall returnera något, så får det inte finnas någon möjlighet att ramla igenom koden utan att träffa på ett 'return'.

popelos 167
Postad: 27 dec 2024 14:27 Redigerad: 27 dec 2024 14:29

lol jag tog bara bort den sista ifen så var biffen klar! De här uppgifterna är riktigt skumma.  Men tack sånt här kanske man fattar senare. 

Svara
Close