Nestled loop, matriser
Hej! Varför ges detta felmeddelande? Nedan finns kod samt felmeddelande bifogat. Hur ska felmeddelandet tolkas? Vad jag vet har jag inte utelämnat väsentliga semikolon.
Felmeddelande:
Vad händer om du ändrar
int rowSum[]
till
int[] rowSum
?
Då ges istället detta felmeddelande:
Nej, den heter ju inte sum, den heter rowSum.
Så hur löser jag detta...
Det står ju i testrutan hur den ska anropas, och då heter den sum.
Var rutan tom från början eller fanns det början till ett förslag?
Från början såg koden ut enligt bilden nedan, men jag skall ju returnera en vektor och inte en int?
Ja, det var ju lite konstigt. Men kalla din funktion sum och se hur det går.
Tydligen är en vektor redan definierad i uppgiften och skall därför inte skapas på nytt, däremot får jag detta felmeddelande:
Du gjorde return rowSum förut, varför gör du return sum[] nu?
För att rowSum inte fungerar, det ger exakt samma felmeddelande.
Kan du visa?
Du hade inte [] där förut.
Men det fungerar inte heller om jag exkluderar []:
Du var ganska nära från början. Och i #3 var du typ klar men metoden hade fel namn så den hittades inte.
Försökt att inte "chansa", ta reda på vad felmeddelandet betyder och ändra därefter.
Exempel i #13:
return rowSum[];
så är det 2 fel
1) rowSum är inte deklarerad så den finns inte.
2) om rowSum vore deklarerad som som en int[] kan du returnera den med "return rowSum;" eller returnera ett värde i vektorn till exempel med "return rowSum[0]". rowSum[] är varken referensen till rowSum-vecktorn eller värde i den.
Felet i #15:
"cannot find symbol" är tydligt: du refererar något som inte finns, dvs inte är deklarerat.
"incompatible types": din metod returnerar en int men anroparen tilldelar en variabel av typen int[]
Deklarera rowSum först i metoden:
int[] rowSum = new rowSum[m.length]; (som du hade från början)
Metodens typ ska också bara int[] (det var felet i ursprungskoden, men då var även typen för metodens argument fel).
I #9 så skriver du på på rad 2:
Int sum = 0
Men kika sedan vad du skriver på rad 6 och 9.
Varför fungerar det inte att göra så?
Vad menar du att sum[r] = sum gör?
Jag menar att sum[r]= sum ökas i värde. För varje rad av matrisen m kommer alla dess värden på den raden adderas till sum[r] där varje "r" i sum representerar ett element.
Sum är ju ingen array, det är ju en int.
Du försöker i samma rad använda sum som en int och en array.
Men det fungerar inte att definiera sum som en array
Du har fortfarande [] i
return rowsum[];
De ska inte vara där.
Tack så mycket för hjälpen! Jag löste det tillsist.
Felmeddelandena är lite svårtolkade, får jag säga. Det varierar en del mellan olika kompilatorer. De kunde ha varit bättre.
Ja det tycker jag verkligen! Övningarna i Moodle som det heter är inte alltid optimala. Tur att pluggakuten finns! :)