8 svar
94 visningar
proghelp är nöjd med hjälpen
proghelp 19
Postad: 11 aug 2020

Radsummera matris

Hej! 

Jag har fastnat på en uppgift där man ska radsummera en matris och returnera resultatet i en vektor. 

Följande är min kod hittills: 

public static int sum(int[][] m) {
int [] rowSum = new int [m.length]; //skapar en vektor med en plats för varje rad
for (int r = 0; r < m.length; r++) { //bläddrar bland rader
for (int c = 0; c < m[r].length; c++) { //bläddrar bland kolonner
rowSum[r] += m[r][c]; //lägger in rad r på plats r i vektorn samt summerar alla "bidrag" från alla kolonner på den raden
}
}
return rowSum;
}

Jag får även felmeddelande som jag försökt att tolka men misslyckats.

Laguna 13518
Postad: 11 aug 2020

Jag tror syntaxfelen kommer från testkoden som försöker använda din kod. Din funktion förväntas returnera en vektor, men den returnerar bara en int.

Aerius 510
Postad: 11 aug 2020

I din funktionsdefinition står det att funktionen returnerar en int, det är fel. Du vill returnera en array av int. Java är roligt, speciellt sen när klasser kommer in i bilden. Då kan du skriva om den här funktionen med en klass vektor och se hur enkelt allt blir :)

proghelp 19
Postad: 11 aug 2020 Redigerad: 11 aug 2020
Laguna skrev:

Jag tror syntaxfelen kommer från testkoden som försöker använda din kod. Din funktion förväntas returnera en vektor, men den returnerar bara en int.

Jag förstår, tack för svar!

proghelp 19
Postad: 11 aug 2020
Aerius skrev:

I din funktionsdefinition står det att funktionen returnerar en int, det är fel. Du vill returnera en array av int. Java är roligt, speciellt sen när klasser kommer in i bilden. Då kan du skriva om den här funktionen med en klass vektor och se hur enkelt allt blir :)

Testade att ändra nu till int [] i metoden men det fungerade inte heller.

Aerius 510
Postad: 11 aug 2020 Redigerad: 11 aug 2020

Din metod heter rowSum, inte sum. Testa med rowSum, vad händer då?

Ser märkligt ut med en variabel i funktionen som har samma namn som funktionen. Men varför inte.

proghelp 19
Postad: 11 aug 2020
Aerius skrev:

Din metod heter rowSum, inte sum. Testa med rowSum, vad händer då?

Ser märkligt ut med en variabel i funktionen som har samma namn som funktionen. Men varför inte.

Jag förstår inte vad du menar att jag ska skriva istället, ska jag ändra metodnamnet eller variabelnamnet?

Metodnamnet var där sen början och ändrar jag det så får jag felmeddelandet som jag infogade senast. Hur får jag den till att den returnerar en array? Går det att göra utan att ändra metodnamnet? 

Aerius 510
Postad: 11 aug 2020
proghelp skrev:
Aerius skrev:

I din funktionsdefinition står det att funktionen returnerar en int, det är fel. Du vill returnera en array av int. Java är roligt, speciellt sen när klasser kommer in i bilden. Då kan du skriva om den här funktionen med en klass vektor och se hur enkelt allt blir :)

Testade att ändra nu till int [] i metoden men det fungerade inte heller.

Läste ditt startinlägg igen. Du har råkat skriva rowSum i det citerade inlägget istället för sum i funktionsdeklarationen. metodnamnet ska inte ändras. Men vad funktionen returnerar för värde ska vara rätt. Om funktionen returnerar en array ska det stå med i funktionsdeklarationen: public static returvärde funktionsnamn()

proghelp 19
Postad: 12 aug 2020
Aerius skrev:
proghelp skrev:
Aerius skrev:

I din funktionsdefinition står det att funktionen returnerar en int, det är fel. Du vill returnera en array av int. Java är roligt, speciellt sen när klasser kommer in i bilden. Då kan du skriva om den här funktionen med en klass vektor och se hur enkelt allt blir :)

Testade att ändra nu till int [] i metoden men det fungerade inte heller.

Läste ditt startinlägg igen. Du har råkat skriva rowSum i det citerade inlägget istället för sum i funktionsdeklarationen. metodnamnet ska inte ändras. Men vad funktionen returnerar för värde ska vara rätt. Om funktionen returnerar en array ska det stå med i funktionsdeklarationen: public static returvärde funktionsnamn()

Det fungerade nu, tack för all hjälp! 

Svara Avbryt
Close