Multidesk.be » Forums » Java » Een return value int[] gelijk stellen aan een nieuwe int[]

  • Pagina
  • 1 van 1
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door arne op vrijdag 24 april 2009 om 20:12:11.
arne's avatar
Multiviteit: 621
Upgrade Your Life!
Intel Inside!
Het is een tijdje geleden dat ik hier nog op multidesk geweets ben, vooral omdat ik hte druk heb nu met de hoge school, maar ook omdat ik multidesk wat vergeten was :$

Maar ik heb een klein vraagje over Java.

Ik zal het even uitleggen met een simpel voorbeeld:

CODE
  1. int[] nieuweInt = new int[2];
  2.  
  3. nieuweInt = methode_return_Int(andere_variabelen);
  4.                                
  5. variabele1 = nieuweInt[0];
  6. variabele2 = nieuweInt[1];


nieuweInt is een nieuwe array die gelijk moet gesteld worden aan de array die ik als 'return value' terug krijg van de methode methode_return_Int. Nu weet ik dat wat ik nu doe in de code By Refference is en niet By Value. En dit normaalgezien met een 'for' lus moet oplossen en de 'index' bij de array nieuweInt moet bijzetten. Maar het probleem is dat de methode methode_return_Int maar 1 maal mag aangeroepen worden. en dus niet in een 'for' lus mag opgenomen worden. Ik zou dus de nieuwe array nieuweInt gelijk willen krijgen aan de array die ik terug krijg van de methode methode_return_Int.

Hier vind ik dus niet direct een oplossing voor.

Zou iemand mij kunnen helpen hierbij?

Thx
Q6600 @ 3,2GHz, ASUS P5Q Premium, Corsair DHX 8GB DDR2, HD5770 CrossFire, 2x OCZ Vertex2 60GB RAID0, Nexus 1000W, Scythe Orochi
^ Reactie #1 geschreven door thekid op vrijdag 24 april 2009 om 21:02:33.
thekid's avatar
Multiviteit: 5273
Moderator
java is weer een tijdje terug

maar is het zoiets?

CODE
  1.  
  2.  
  3. public class Testing {
  4.  
  5.         /**
  6.          * @param args
  7.          */
  8.         public static int[] returnIntTab()
  9.         {
  10.                 return new int[] { 1, 2, 3, 4, 5, 6 };
  11.         }
  12.        
  13.         public static void main(String[] args) {
  14.                 // TODO Auto-generated method stub
  15.                 int[] tmpTab = new int[2];
  16.                 int[] tmpTab2 = new int[2];
  17.                
  18.                 tmpTab = returnIntTab();
  19.                 tmpTab2 = tmpTab;
  20.                 System.out.printf("Does tmpTab2 match tmpTab? %0$B\r\n", tmpTab.equals(tmpTab2));
  21.                 tmpTab2[0] = 20; tmpTab2[3] = 30;
  22.                 // compare results
  23.                 for (int x = 0; x < tmpTab.length; x++)
  24.                 {
  25.                         System.out.printf("tmpTab[" + x + "] = " + tmpTab[x] + "\ttmpTab2[" + x + "] = " + tmpTab2[x] + "\r\n");
  26.                 }
  27.  
  28.                 // volgende poging
  29.                 tmpTab = returnIntTab();
  30.                 tmpTab2 = tmpTab.clone();
  31.                 System.out.printf("And the cloned version? %0$B\r\n", tmpTab.equals(tmpTab2));
  32.                 tmpTab2[0] = 20; tmpTab2[3] = 30;
  33.                 // compare results
  34.                 for (int x = 0; x < tmpTab.length; x++)
  35.                 {
  36.                         System.out.printf("tmpTab[" + x + "] = " + tmpTab[x] + "\ttmpTab2[" + x + "] = " + tmpTab2[x] + "\r\n");
  37.                 }
  38.         }
  39.  
  40. }
  41.  


output hiervan is dan hetvolgende

CODE
  1.  
  2. Does tmpTab2 match tmpTab? TRUE
  3. tmpTab[0] = 20  tmpTab2[0] = 20
  4. tmpTab[1] = 2   tmpTab2[1] = 2
  5. tmpTab[2] = 3   tmpTab2[2] = 3
  6. tmpTab[3] = 30  tmpTab2[3] = 30
  7. tmpTab[4] = 5   tmpTab2[4] = 5
  8. tmpTab[5] = 6   tmpTab2[5] = 6
  9. And the cloned version? FALSE
  10. tmpTab[0] = 1   tmpTab2[0] = 20
  11. tmpTab[1] = 2   tmpTab2[1] = 2
  12. tmpTab[2] = 3   tmpTab2[2] = 3
  13. tmpTab[3] = 4   tmpTab2[3] = 30
  14. tmpTab[4] = 5   tmpTab2[4] = 5
  15. tmpTab[5] = 6   tmpTab2[5] = 6
  16.  


ohja, je kan de method ook direct na het ophalen van de functie steken, dit mag dus ook ;)

CODE
  1. int[] intArray = returnIntTab().clone();
Deze tekst werd het laatst bewerkt voor 4.51 % door thekid op vrijdag 24 april 2009 om 21:04:32.
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #2 geschreven door arne op vrijdag 24 april 2009 om 22:11:20.
arne's avatar
Multiviteit: 621
Upgrade Your Life!
Intel Inside!
Het laatste wat je daar voorgesteld hebt heb ik al geprobeert en dat werkte niet dacht ik.
Maar misschien kan ik het proberen zoals in dat eerste voorbeeld door een new int te returne. En de variabelen van de array dan tussen de '{' '}' te plaatsen.

Ik probeer het zo eens uit, thx
Q6600 @ 3,2GHz, ASUS P5Q Premium, Corsair DHX 8GB DDR2, HD5770 CrossFire, 2x OCZ Vertex2 60GB RAID0, Nexus 1000W, Scythe Orochi
^ Reactie #3 geschreven door thekid op vrijdag 24 april 2009 om 23:05:13.
thekid's avatar
Multiviteit: 5273
Moderator
mja, ik verstond niet juist wat je wilde bedoelen met je abstracte voorbeeld :-)
als je een tabel kloont wordt wel degelijk de tabel gekopieerd naar een nieuwe geheugenlocatie, en dus geen ref doorgegeven naar de reeds bestaande tabel in het geheugen ;-)

mijnen new int returnen was gewoon omdat ik geen gegevens had om te exporteren naar een array, hé, puur als voorbeeld ;)

Mag ik trouwens nog opmerken, ik heb maar voor de lol uwen new int[2] bij de declaratie aangenomen om eigenlijk te tonen te tonen dat je niet op de voorhand moet weten hoeveel elementen in je Array zitten, je kan dan nog beter gewoon bij de declaratie de tabel invoeren, of de array als null laten initialiseren en deze dan laten invullen door uw return method. Je kan via length steeds de lengte van een array opvragen, dus steeds beter dan een vaste lengte te nemen om array's te gebruiken ;)
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #4 geschreven door arne op zaterdag 25 april 2009 om 15:12:20.
arne's avatar
Multiviteit: 621
Upgrade Your Life!
Intel Inside!
bedankt voor de hulp, want het werkt nu :) ik kan terug verder (thumbsup)
Q6600 @ 3,2GHz, ASUS P5Q Premium, Corsair DHX 8GB DDR2, HD5770 CrossFire, 2x OCZ Vertex2 60GB RAID0, Nexus 1000W, Scythe Orochi
  • Pagina
  • 1 van 1

Snel-antwoordformulier
Toon uitgebreid antwoordformulier Bericht nalezen Bericht plaatsen