25 svar
114 visningar
civilingengör är nöjd med hjälpen
civilingengör 191
Postad: 1 apr 17:51

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:

Laguna 19941
Postad: 1 apr 19:41

Vad händer om du ändrar

int rowSum[] 

till 

int[] rowSum 

?

civilingengör 191
Postad: 1 apr 19:49

Då ges istället detta felmeddelande:

Laguna 19941
Postad: 1 apr 19:58

Nej, den heter ju inte sum, den heter rowSum.

civilingengör 191
Postad: 2 apr 04:44

Så hur löser jag detta... 

Laguna 19941
Postad: 2 apr 08:23

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?

civilingengör 191
Postad: 2 apr 10:55

Från början såg koden ut enligt bilden nedan, men jag skall ju returnera en vektor och inte en int?

 

Laguna 19941
Postad: 2 apr 11:24

Ja, det var ju lite konstigt. Men kalla din funktion sum och se hur det går.

civilingengör 191
Postad: 2 apr 20:14

Tydligen är en vektor redan definierad i uppgiften och skall därför inte skapas på nytt, däremot får jag detta felmeddelande:

Laguna 19941
Postad: 2 apr 21:45

Du gjorde return rowSum förut, varför gör du return sum[] nu?

civilingengör 191
Postad: 3 apr 09:25 Redigerad: 3 apr 09:29

För att rowSum inte fungerar, det ger exakt samma felmeddelande.

Laguna 19941
Postad: 3 apr 10:03

Kan du visa?

civilingengör 191
Postad: 3 apr 10:24

Laguna 19941
Postad: 3 apr 14:06

Du hade inte [] där förut.

civilingengör 191
Postad: 3 apr 15:06 Redigerad: 3 apr 15:14

Men det fungerar inte heller om jag exkluderar []:

Programmeraren 3044
Postad: 3 apr 15:54

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).

Dracaena 4947 – Moderator
Postad: 3 apr 17:07 Redigerad: 3 apr 17:07

I #9 så skriver du på på rad 2:

Int sum = 0

Men kika sedan vad du skriver på rad 6 och 9.

civilingengör 191
Postad: 4 apr 14:56

Varför fungerar det inte att göra så?

Laguna 19941
Postad: 4 apr 15:06

Vad menar du att sum[r] = sum gör?

civilingengör 191
Postad: 5 apr 07:39

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.

Dracaena 4947 – Moderator
Postad: 5 apr 07:47

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. 

civilingengör 191
Postad: 5 apr 08:19

Men det fungerar inte att definiera sum som en array

Laguna 19941
Postad: 5 apr 08:37

Du har fortfarande [] i

return rowsum[];

De ska inte vara där.

civilingengör 191
Postad: 6 apr 19:35

Tack så mycket för hjälpen! Jag löste det tillsist.

Laguna 19941
Postad: 6 apr 19:38

Felmeddelandena är lite svårtolkade, får jag säga. Det varierar en del mellan olika kompilatorer. De kunde ha varit bättre.

civilingengör 191
Postad: 6 apr 19:44

Ja det tycker jag verkligen! Övningarna i Moodle som det heter är inte alltid optimala. Tur att pluggakuten finns! :)

Svara Avbryt
Close