12 svar
103 visningar
Plugghingsten är nöjd med hjälpen!
Plugghingsten 381
Postad: 23 feb 2020

Logiska uttryck (2)

Skriv en metod vid namn daysPerMonth med en parameter monthNbr av typen int. Denna metod ska returnera antal dagar i månad nummer monthNbr. Månaderna numreras 1-12 (skottår försummas).

 

Mitt lösningsförslag:

Jag får följande felmeddelande:

Yngve 16056 – Volontär digitala räknestugor
Postad: 23 feb 2020 Redigerad: 23 feb 2020

Du måste ange en returtyp vid deklarationen.

Det ska alltså stå

public static int daysPerMonth() {

Du saknar även ett return-statement som returnerar resultatet.

Laguna 8980
Postad: 23 feb 2020

Funktionen ska returnera antal dagar i en månad, så den ska ha typen 'int'. Det är det kompilatorn klagar på.

När du har fixat det kommer det fler felmeddelanden, för det man ska göra för att returnera ett värde från en funktion är 'return' med det värdet.

Plugghingsten 381
Postad: 23 feb 2020 Redigerad: 23 feb 2020

Skrev om den lite utefter jag tolkade era svar:

Nu får jag massvis med felmeddelanden. Gjorde jag ett så grovt fel med detta?

EDIT: Jag ändrade nu i koden, rad 13: "return daysPerMonth;".

EDIT #2: Metodens namn är ändrad från "dayssPerMonth" till "daysPerMonth".

Laguna 8980
Postad: 23 feb 2020
Plugghingsten skrev:

Skrev om den lite utefter jag tolkade era svar:

Nu får jag massvis med felmeddelanden. Gjorde jag ett så grovt fel med detta?

EDIT: Jag ändrade nu i koden, rad 13: "return daysPerMonth;".

EDIT #2: Metodens namn är ändrad från "dayssPerMonth" till "daysPerMonth".

Vad blir det för fel då?

Plugghingsten 381
Postad: 23 feb 2020 Redigerad: 23 feb 2020

Jag förstår inte heller vad som menas med (t.ex.) "__tester__.java:8:" som står allra överst.

Yngve 16056 – Volontär digitala räknestugor
Postad: 23 feb 2020 Redigerad: 23 feb 2020

Du har deklarerat en variabel som heter daysperMonth men använder en odeklarerad variabel som heter daysPerMonth.

Men den variabeln behövs inte alls.

Du kan direkt skriva return 28, return 30 eller return 31 i koden.

Plugghingsten 381
Postad: 23 feb 2020

Så här?

Jag misstänker att jag uppfattar dig fel då jag får följande felmeddelande:

Listan går ända ner till 12, det är början som finns med på senaste bilden.

Yngve 16056 – Volontär digitala räknestugor
Postad: 23 feb 2020 Redigerad: 23 feb 2020

Du deklarerar metoden

public static int daysPerMonth()

utan parametrar, men anropar sedan metoden med ett heltal:

System.out.println(daysPerMonth(1))

----------------------

Ett annat problem (som antagligen inte kompilatorn fångar) är att du i metoden daysPerMonth använder variabeln monthNbr utan att ha satt den.

Laguna 8980
Postad: 23 feb 2020 Redigerad: 23 feb 2020

"__tester__.java:8:" anger filens namn, och raden där felet upptäcktes. Din fil heter förmodligen inte __tester__.java, men jag antar att du skickar in din kod till nån testsida, och att det är den som sparar koden tillfälligt på en fil med det namnet.

Edit: Som Yngve skriver tar din metod inga argument, men det stod i uppgiften att den ska ta argumentet monthNbr av typen int. Du har definierat en lokal variabel med det namnet, men det är inte samma sak.

Plugghingsten 381
Postad: 24 feb 2020 Redigerad: 24 feb 2020

Jag fick godkänt för versionen nedan. 

Är det så här ni vile se det som?

 


 

@Laguna: Men om vi tar och kikar på felmeddelandet som står allra först

"__tester__.java:8: error: cannot find symbol

           daysPerMonth = 28;

           ^

      symbol:     variable daysPerMonth

      location: class __tester__"

så tolkar jag det då som om vi finner detta fel på rad 8, inte sant? Läser vi i koden står där att det är på rad 6.

 


 

En övrig fråga om skriva kod. Den längsta raden här i koden är på rad 8. Om den skulle vara längre, hur får man den till nästa rad så att man slipper scrolla åt sidan? Förstår ni min fråga?

Laguna 8980
Postad: 24 feb 2020

Det där med radnumren är ju irriterande. Antagligen har de lagt till nånting före din kod innan de kompilerar. Normalt pekar kompilatorn ut rätt rad.

 

Bryta rader kan du göra lite var du vill. Där det får finnas ett blanktecken får det finnas en radbrytning. 

Plugghingsten 381
Postad: 24 feb 2020

Hmm, hade för mig att det inte godkändes. Slarv av mig antar jag. Tack för hjälpen med denna uppgift!

Svara Avbryt
Close