Multidesk.be » Forums » Java » oneindig veel parameters (gesloten)

Helpinformatie
Dit onderwerp bevindt zich in het archief.
Het is bijgevolg niet mogelijk er nog op te reageren.
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door een gast op vrijdag 20 april 2007 om 21:44:36.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
wij hebben een opdracht om punten (theoretisch dan) in n dimensies 'voor te stellen'
met voor te stellen bedoel ik dan: dat de punten gewoon n co÷rdinaten hebben
maar we zitten vast bij de constructor van een punt
vooraf is niet gekend hoeveel coordinaten een punt heeft, maar hoe doe je dat?

public Punt (int x, int y) voor 2 dimensies
public Punt ( "wat moet hier) voor n dimensies, met n onbekend

bedankt
^ Reactie #1 geschreven door SMG op vrijdag 20 april 2007 om 21:57:21.
SMG's avatar
Multiviteit: 12000
Moderator
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Kan je niet gewoon een array of arraylist meegeven als parameter.

Verder zou ik mij niet kunnen inbeelden wat het zou kunnen zijn. Het aantal parameters moet (naar mijn weten) een vaste waarde hebben.
^ Reactie #2 geschreven door een gast op vrijdag 20 april 2007 om 22:24:13.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
mja naar het schijnt kan je zoiets doen met " .. " ofzo, maar dat is alles wat we daarover weten
een array is minder proper als parameter :)
^ Reactie #3 geschreven door SMG op vrijdag 20 april 2007 om 22:36:36.
SMG's avatar
Multiviteit: 12000
Moderator
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Ik denk dat het veel lelijkere is om 10 parameters mee te geven dan 1 array of arraylist.
^ Reactie #4 geschreven door een gast op vrijdag 20 april 2007 om 22:38:52.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
in code zou .. mooier zijn dan een hele array

een vector is btw mooier dan een array :)
^ Reactie #5 geschreven door SMG op vrijdag 20 april 2007 om 22:55:24.
SMG's avatar
Multiviteit: 12000
Moderator
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Een paard is ook schoner dan een ezel, maar met een ezel zal het ook lukken ;)
^ Reactie #6 geschreven door Martijn op zaterdag 21 april 2007 om 10:39:59.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
In principe "mag" dat zelfs niet (naargelang de code conventies die je volgt natuurlijk). Getters en setters zijn de correcte manier in principe.

Soit, dat wat jij vraagt gaat pas sinds SE 5.0 overigens. Bijvoorbeeld:

CODE
  1. public void punt(int... punten) {
  2.    
  3.     for (int i : punten) {
  4.        
  5.         System.out.println("Punt: " + i);
  6.        
  7.     }
  8.  
  9. }
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #7 geschreven door een gast op zaterdag 21 april 2007 om 13:50:15.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
public void punt(int... co÷rd) {

for (int i : co÷rd) {

System.out.println("co÷rdinaat: " + i);

}
}


is het dan ook mogelijk om de 3e, 4e ... n-de co÷rdinaat alleen op te vragen?
^ Reactie #8 geschreven door Martijn op zondag 22 april 2007 om 10:30:33.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
tellertje inbouwen hÚ :).
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #9 geschreven door een gast op zondag 22 april 2007 om 17:22:19.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
hm nee ik zie het niet echt

ik zou een getCoordAt(int x) willen
^ Reactie #10 geschreven door Martijn op zondag 22 april 2007 om 21:16:25.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Ah, slechts 1 parameter?

Dat gaat heel eenvoudig. Aangezien de lijst van parameters een Array is, kan je gewoon de "normale" methodes gebruiken erop.

Dus het n-de element opvragen gaat zo:

CODE
  1. punten[n-1]


Concreet; de tweede parameter (er van uitgaand dat je er minstens twee hebt) gaat zo:

CODE
  1. punten[1]


Ik heb ook even een testklasse voor je aangemaakt:

CODE
  1. package be.multidesk.example;
  2.  
  3. import java.awt.Button;
  4. import java.awt.event.ActionEvent;
  5. import java.awt.event.ActionListener;
  6.  
  7. import javax.swing.JFrame;
  8.  
  9. public class Test {
  10.  
  11.         public static JFrame canvas;
  12.  
  13.         public static void main(String args[]) {
  14.  
  15.                 canvas = new JFrame(
  16.                                 "Multidesk.be - Niet gespecificeerd aantal parameters doorgeven");
  17.  
  18.                 canvas.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
  19.                 Button button = new Button("Klik mij om 4 parameters door te geven");
  20.  
  21.                 button.addActionListener(new ActionListener() {
  22.  
  23.                         public void actionPerformed(ActionEvent e) {
  24.                                 punt(1, 2, 3, 4);
  25.  
  26.                         }
  27.  
  28.                 });
  29.  
  30.                 canvas.add(button);
  31.                 canvas.setSize(600, 200);
  32.                 canvas.setVisible(true);
  33.  
  34.         }
  35.  
  36.         public static void punt(int... punten) {
  37.  
  38.                 System.out.println("De tweede parameter is: " + punten[1]);
  39.  
  40.                 for (int i : punten) {
  41.  
  42.                         System.out.println("Punt: " + i);
  43.  
  44.                 }
  45.  
  46.         }
  47.  
  48. }
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #11 geschreven door een gast op zondag 22 april 2007 om 23:13:19.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
hm nee ik wou het niet bij een array

deze code:

public void punt(int... co÷rd) {

for (int i : co÷rd) {

System.out.println("co÷rdinaat: " + i);

}
}


en dan een methode getCoordAt(int x)

^ Reactie #12 geschreven door NightCreature op maandag 23 april 2007 om 00:01:31.
NightCreature's avatar
Multiviteit: 1196
MSc.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
De enige manier om oneindig veel parameters mee te geven is een array. Aangezien je geen pointers in java kunt gebruiken. Zoals in C/C++ zie onderstaand voorbeeld
CODE
  1.  
  2. public punt(int* parameters, int numberparameters); //enkel ints
  3. public punt(BYTE* parameters, int sizeofparamtype, int numberparameters); //elke data die je maar kunt verzinnen
  4.  

Daarnaast zal de ... implementatie in de achtergrond wel gerbuik maken van een array. Om overhead te sparen kun je dan al beter zelf gewoon een aray meegeven
Deze tekst werd het laatst bewerkt voor 38.13 % door NightCreature op maandag 23 april 2007 om 00:04:00.
I need thought completion.
Shaders, een beetje vreemd maar wel lekker (voor de ogen dan he)
2.83Ghz Q9550 HD4850 512MiB 4GiB 1333Mhz DDR3 RAM
http://paulintheuk.blogspot.com
FE Programmer @ Codemasters (Front End)
^ Reactie #13 geschreven door Martijn op maandag 23 april 2007 om 07:14:52.
Martijn heeft nog geen avatar toegevoegd
Multiviteit: 13785
Beheerder
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Neen, nee, je begrijpt het verkeerd.

Het IS gewoon een array dat je krijgt doorgegeven. Kijk naar mijn code, dan zie je toch hoe het werkt?

Net zoals NightCreature zei overigens; intern gebruikt men gewoon een Array, dus kan je ook gewon de Array functies toepassen.
Met vriendelijke groeten,
Martijn Wouters
^ Reactie #14 geschreven door een gast op maandag 23 april 2007 om 15:32:02.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
ow ja sorri, had er over gekeken

maar, NightCreature jij zegt dat je oneindige parameters met" type* paramnaam " moet doen, wat is " type... paramnaam " dan volgens jou?
^ Reactie #15 geschreven door NightCreature op maandag 23 april 2007 om 17:51:28.
NightCreature's avatar
Multiviteit: 1196
MSc.
  • Bewerken
  • Citeren
  • Reageren
  • Verwijderen
  • Waarschuw een crewlid
Zoals ik al in mijn eerdere code zei is mijn voorbeeld in C/C++ dit is GEEN Java. Met TYPE* <varnaam> geef je aan dat in varnaam enkel een adress staat naar een geheugen plek waar data van het type TYPE staat.
Daarnaast wordt een array in C/C++ als een pointer door gegeven aan een functie, een array is in deze taal gewoon een blok geheugen, waarvan het type en de groote van de elementen bekend is.

Je kunt dus nu in je applicatie ofwel de ... methode gebruiken of een array als parameter meegeven. Ik zou persoonlijk kiezen voor het array omdat dat er netter uit ziet. Bij een ... notatie weet je niet precies wat je moet verwachten.
I need thought completion.
Shaders, een beetje vreemd maar wel lekker (voor de ogen dan he)
2.83Ghz Q9550 HD4850 512MiB 4GiB 1333Mhz DDR3 RAM
http://paulintheuk.blogspot.com
FE Programmer @ Codemasters (Front End)
  • Pagina
  • 1 van 1
  • RSS
  • Eerste ongelezen reactie
  • Plaats een reactie
  • Abonneer mij
  • Onderwerp sluiten