Permalänk
Medlem

Java angående metoder

Tjena jag har en fråga angående metoder.
Jag har skapat en metod som räknar ut två olika värden men man kan ju bara retunera ett värde till main.

Kan man på något sätt fixa så att metoden retunerar båda värderna till main?

PS är en nybörjare på Java, så var snäll o förklara tydligt
Tacksam för svar

Visa signatur

Gigabyte P35 DS4 | Intel E6750 @ 3.6 Ghz | Gigabyte 8800GTS 512MB @ 743/1804/1000| 4096MB Corsair 6400 @ 900mhz |WD Raptor 74GB + WD 250GB + Samsung 500GB | Hiper Type-R 580W | NZXT Hush

Permalänk

Du kan lägga in värdena i en array tex och retunera den.

public int[] metod(int a, int b){ //din kod... int[] array; array = new int[2]; array[0] = a; array[1] = b; return array; }

Permalänk
Medlem

om du gör en metod som du vill kunna anropa i main så måste den vara static, annars måste du instansiera din klass med new och anropa metoden från instansen.

Permalänk
Medlem

Använd en datastruktur som kan innehålla flera värden och returnera den. En variant är Cloudbursts med en array med värden, en annan är att du skapar en klass som har fält för de värden du vill skicka tillbaka.

Visa signatur

OSIRIS GUITAR - youtube-kanal om elgitarrer, mixning och teknik i hemmastudio

Permalänk
Medlem

ok tack för svaren ska ta o köra med en array som Cloudburst sa

Visa signatur

Gigabyte P35 DS4 | Intel E6750 @ 3.6 Ghz | Gigabyte 8800GTS 512MB @ 743/1804/1000| 4096MB Corsair 6400 @ 900mhz |WD Raptor 74GB + WD 250GB + Samsung 500GB | Hiper Type-R 580W | NZXT Hush

Permalänk
Medlem

Det du bör göra är att skapa en ny datastruktur som beskriver de två värden som den innehåller. Typ;

public class Position { private int x; private int y; public Position(int x, int y) { this.x = x; this.y = y; } public int getX() { return this.x; } public int getY() { return this.y; } } ... public class MyClass { ... public Position method() { /* Räkna ut värden */ return new Position(5, 10); } }

Permalänk
Medlem

testade idag detta med att retunera fler värden
testade med Cloudbursts förslag

public int[] metod(int a, int b){
//din kod...
int[] array;
array = new int[2];
array[0] = a;
array[1] = b;
return array;
}

men hur ska jag göra vid anropet vid main?

public static void main(String[]args)
{
int poäng[] = new int[2];
int a=0;
int b=0;
poäng[]= metod(a,b);
}

har testat med detta men får fel... Kan inte komma på vad som är fel, skulle uppskatta lite hjälp?

Visa signatur

Gigabyte P35 DS4 | Intel E6750 @ 3.6 Ghz | Gigabyte 8800GTS 512MB @ 743/1804/1000| 4096MB Corsair 6400 @ 900mhz |WD Raptor 74GB + WD 250GB + Samsung 500GB | Hiper Type-R 580W | NZXT Hush

Permalänk
Medlem

Din metod behöver vara static, som tidigare nämnts:

public static int[] metod(int a, int b)

Sedan räcker det för anropen att skriva:

int[] poäng; poäng = metod(1, 2);

EDIT: Men vill du initialisera en array till att bara ha nollor behöver du inte göra någonting - Java sätter själv alla ints till att vara noll om inget annat anges.

Permalänk
Medlem

aha ok bra o veta

men jag testade detta med det du sa....Det står incompatible types på return raden och poäng = metod(1, 2); raden.....har detta nånting med att göra att jag kör static?

EDIT: Jag kör med JCreator om de gör någon skillnad:)

Visa signatur

Gigabyte P35 DS4 | Intel E6750 @ 3.6 Ghz | Gigabyte 8800GTS 512MB @ 743/1804/1000| 4096MB Corsair 6400 @ 900mhz |WD Raptor 74GB + WD 250GB + Samsung 500GB | Hiper Type-R 580W | NZXT Hush

Permalänk
Medlem

Hela koden, tack.

Permalänk
Medlem

ahh den e riktigt lång kanske kan skicka över den på PM till dig?

Visa signatur

Gigabyte P35 DS4 | Intel E6750 @ 3.6 Ghz | Gigabyte 8800GTS 512MB @ 743/1804/1000| 4096MB Corsair 6400 @ 900mhz |WD Raptor 74GB + WD 250GB + Samsung 500GB | Hiper Type-R 580W | NZXT Hush

Permalänk
Medlem

Jag menar naturligtvis hela den del av koden som du har problem med, de relevanta delarna... som metoden du försöker få till, och den rad som genererar felet, inte det som inte har med problemet att göra.

Men om du inte kan plocka ut det som angår problemet...
Är koden på max 60-70 rader, posta här, då i code-taggar, alltså [ code ] ... [/ code ] (utan mellanslagen). Är den över det, skicka PM.

Permalänk
Medlem

haha ok nee men jag löste det nu men tack för hjälpen ändå

Visa signatur

Gigabyte P35 DS4 | Intel E6750 @ 3.6 Ghz | Gigabyte 8800GTS 512MB @ 743/1804/1000| 4096MB Corsair 6400 @ 900mhz |WD Raptor 74GB + WD 250GB + Samsung 500GB | Hiper Type-R 580W | NZXT Hush