Felmeddelande för en färsking: Use of unassigned local variable.

Permalänk
Medlem

Felmeddelande för en färsking: Use of unassigned local variable.

God kväll! Jag är så färsk som man kan bli vad gäller programmering, läser i denna stund Programmering 1 på komvux och skulle behöva lite hjälp med en av uppgifterna.

"Varför frågar du inte din lärare?" - För att man måste boka telefontid (pluggar distans) och jag hoppas på att svaret är så pass enkelt att någon duktig direkt ser problemet då det inte är så värst mycket kod vi pratar om.

Se bifogad bild för kod:

(https://imgur.com/a/hQPRCFN)

Jag misstänker att värdet som tilldelas "myItem" under case 1 inte följer med till case 2 likt en variabels värde inte följer med till nya kodblock (såvida det inte är underblock).

Skulle jag vara rätt ute i min misstanke har jag ändå svårt att lösa problemet (talar ganska mycket för hur oerfaren jag är kanske).
Skulle jag vara fel ute i min misstanke kanske man kan få lite klarhet, oftast brukar jag få ett "ahaaa"-moment samma stund som jag får en lösning framför mig.

Kan tilläggas att jag inte latar mig här, jag har suttit med detta i 2h varav 1h 45min varit för detta problem, nu ger jag lite upp och hoppas att det kan finnas svar att tillhandahålla så denna uppgift kan slutföras under morgondagen.

Mvh, tokiig.

Permalänk
Medlem
Skrivet av tokiig:

Jag misstänker att värdet som tilldelas "myItem" under case 1 inte följer med till case 2 likt en variabels värde inte följer med till nya kodblock (såvida det inte är underblock).

Inte riktigt, myItem kommer aldrig att ha något värde i case 2, eftersom endast ett case kan köras i switchen. Switchen ligger förvisso i en while-loop, men eftersom du deklarerat myItem inne i loopen så kommer en ny myItem-variabel skapas varje gång loopen börjar om.

Om du skulle deklarera myItem utanför loopen så skulle den efter att ha fått ett värde i case 1 behålla det värdet under hela exekveringen av loopen. myItem skulle dock fortfarande vara oinitialiserad ifall användaren väljer 2 utan att välja 1 först, så kompilatorn kommer fortfarande inte tillåta det. Du kan lösa det problemet genom att bara initialisera myItem, t.ex. med en tom sträng:

string myItem = "";

Permalänk
Medlem
Skrivet av perost:

Inte riktigt, myItem kommer aldrig att ha något värde i case 2, eftersom endast ett case kan köras i switchen. Switchen ligger förvisso i en while-loop, men eftersom du deklarerat myItem inne i loopen så kommer en ny myItem-variabel skapas varje gång loopen börjar om.

Om du skulle deklarera myItem utanför loopen så skulle den efter att ha fått ett värde i case 1 behålla det värdet under hela exekveringen av loopen. myItem skulle dock fortfarande vara oinitialiserad ifall användaren väljer 2 utan att välja 1 först, så kompilatorn kommer fortfarande inte tillåta det. Du kan lösa det problemet genom att bara initialisera myItem, t.ex. med en tom sträng:

string myItem = "";

TACK. Uppskattar också förklaringen att myItem nollställs hela tiden om inte man har deklarerat innan while-loopen. Din lösning var spiken i kistan och resten av uppgiften gick som en dans på rosor. Tack igen!