Permalänk
Medlem

Java, flera värden och metoder.

Hej,

Jag undrar om jag på något sätt kan skapa en metod som returnerar flera värden till flera olika variabler?

och hur jag isåfall göra detta.

lite exempelkod vore toppen

Visa signatur

Letar du bostad i Stockholm?
Snabbostad.se

Permalänk
Medlem

Har inte riktigt tid att göra något kod, men antingen kan du ju ha ett objekt av en typ som du själv vet vad det är som du returnerar som i sin tur innehåller en massa värden. I annat fall om du skickar med lite variabler av olika objekttyper borde du väl kunna ändra i dem inuti metoden. Det är lättare att hjälpa till mer konkret om du berättade mer exakt vad du ville åstadkomma..

Men det finns säkert något java guru som vet hur man gör annars

Permalänk
Medlem

Jag försöker göra en metod som får in 5 boolean värden. och om de är true så randomar datorn ett tal mellan 1-6 annars så returnerar den noll.

alltså är värden true,true, false,true,false

så skulle vill jag returnera 3 värden på 1-6 och 2 värden på 0.

Jag vet dock inte hur jag returnerar värden till fler än en variabel

Visa signatur

Letar du bostad i Stockholm?
Snabbostad.se

Permalänk
Medlem

kanske något såhär? inte testat själv dock..

private int slumptal(boolean b1,boolean b2,boolean b3,boolean b4,boolean b5) { if(b1 && b2 && b3 && b4 && b5) return (int) (Math.random()*6)+1; else return 0; }

edit läste noggrannare och såg att du inte menade som jag trodde du menade.. Du kan inte anropa en funktion 5 ggr annars?

Permalänk
Medlem
Skrivet av folke123:

Jag försöker göra en metod som får in 5 boolean värden. och om de är true så randomar datorn ett tal mellan 1-6 annars så returnerar den noll.

alltså är värden true,true, false,true,false

så skulle vill jag returnera 3 värden på 1-6 och 2 värden på 0.

Jag vet dock inte hur jag returnerar värden till fler än en variabel

I det här fallet är en möjlighet att returnera en array av värden.

Visa signatur

Vill du ha svar? Citera mig gärna.

Permalänk
Medlem

Du kan använda dig av variablerna du skickar in, är inte så inne på java i dag, mer c++ då man får ange själv vad som är pekare och referenser. Tycker för övrigt det är en konstig funktion och skulle nog skicka in en bool i taget, sen returnera en lista eller vektor med nuffrer, genom return eller genom parameter.

Edit, väldigt sen som vanligt så går det när man har ett tiotal fönster öppna...

Permalänk
Medlem

Jag vill returnera fem olika värden. Hur fungerar arrayer? vi har inte gått igenom dem i skolan

Visa signatur

Letar du bostad i Stockholm?
Snabbostad.se

Permalänk
Medlem
Permalänk
Medlem

Var det så du menade? Är annars trevligare att dela upp metoderna till mindre bitar itsället för stora nystan. Fem argument är lite att ta i.

int[] där har du dina fem värden, t.ex är int[0] = värdet för boolean a och int[4] = värdet för boolean e

int[] value = new int[]{1,2,3,4,5}; for (int i = 0; i < value.length; i++) { System.out.println(value[i]); }

Detta skulle då ge
1
2
3
4
5

public int[] testData(boolean a, boolean b, boolean c, boolean d, boolean e) { boolean[] data = new boolean[] { a, b, c, d, e }; int[] value = new int[data.length]; for (int i = 0; i < data.length; i++) { if (data[i]) { value[i] = (int) (Math.random() * 6) + 1; } value[i] = 0; } return value; } public int testData(boolean a) { int data = 0; if (a) { data = (int) (Math.random() * 6) + 1; } return data; } public int[] testData(boolean[] data){ int[] value = new int[data.length]; for (int i = 0; i < data.length; i++) { value[i] = testData(data[i]); } return value; }

Permalänk
Hedersmedlem

Som anekdot kan man nämna att i en del språk kan man göra precis det du ville göra från början. Se det här exemplet i Ruby. Så det är ingen omöjlighet, bara språkbegränsning.
Multiple return values and assignments in Ruby - Vincent Liu

Skrivet av Dalton Sleeper:

Du kan använda dig av variablerna du skickar in, är inte så inne på java i dag, mer c++ då man får ange själv vad som är pekare och referenser. Tycker för övrigt det är en konstig funktion och skulle nog skicka in en bool i taget, sen returnera en lista eller vektor med nuffrer, genom return eller genom parameter.

Edit, väldigt sen som vanligt så går det när man har ett tiotal fönster öppna...

Man kan inte använda variabler man skickar in för att ge tillbaka ett resultat. Java är call-by-value för primitiva datatyper, de skickas som värden. När det gäller objekt skickas en värde (en kopia) som pass-by-value på en referens/pekare (vad man nu vill kalla det) till objektet. Man kan alltså inte förstöra anroparens referens (som i C++) men båda kan arbeta på objektet (call-by-sharing).

Visa signatur

Forumregler | Feedbackforumet | Något som behöver modereras? Tryck på Anmäl inlägget och ge en anledning, någon moderator kommer granska inlägget och göra (egen) bedömning
"Fate. Protects fools, little children and ships named Enterprise." - Riker - ST:TNG

Permalänk
Medlem

Om du beskriver problemet (eller delen av problemet som är relevant just nu) kan vi höja diskussionen en nivå och därigenom ge dig mer relevanta tips.