[java]Aantal variabelen laten verschillen

Pagina: 1
Acties:

  • Hephaistus
  • Registratie: September 2003
  • Laatst online: 23-06-2025
Is het mogelijk om het aantal variabelen die bij een methode moeten worden in gegeven te laten verschillen?

vb
code:
1
2
3
4
5
6
7
8
9
10
11
12
public class Voorbeeld{

   private int x;

   public Voorbeeld(int x){
     this.x=x;
   }

   public int voorbeeld(int a, int b,...){
      return a+b;
   }
}


waarbij (int a, int b,...) het aantal hier verschilt afhankelijk van x
Vb:als x=3 dan zijn er 3 variabelen. nl (int a, int b, int c).

Thx in advance :)

Verwijderd

Ik denk dat je hier beter werkt met een array van x elementen. Die elementen kan je dan doorlopen van 0 tot array.lengt -1 en optellen. Die som kan je dan returnen.

Verwijderd

Green_Yoda schreef op 07 december 2003 @ 12:49:
Is het mogelijk om het aantal variabelen die bij een methode moeten worden in gegeven te laten verschillen?
Jip... met een array. Een anderen manier is er niet. Je kunt in je arguments van je function gewoon een array declaratie doen. B)


edit:

Ff voorbeeld code voor je:

Visual Basic:
1
2
3
4
5
6
7
8
Sub StudentScores(ByVal Name As String, ByVal ParamArray Scores() As String)
   Dim I As Integer
   Debug.WriteLine("Scores for " & Name & ":")
   ' Use UBound function to determine largest subscript of array.
   For I = 0 To UBound(Scores)
      Debug.WriteLine("Score " & I & ": " & Scores(I))
   Next I
End Sub

[ Voor 50% gewijzigd door Verwijderd op 07-12-2003 13:16 ]


Verwijderd

In java ziet de body van je methode er dan ongeveer zo uit:
Java:
1
2
3
4
5
6
7
int [x] a; 
int som;
for (int i = 0 ; i < a.length  ; i++)
{
      som +=a[i];
}
return som;

  • Hephaistus
  • Registratie: September 2003
  • Laatst online: 23-06-2025
Die som die ik daar gaf was een voorbeeld, wat ik moet terug geven is iets complexer. Ik weet ook wel als je gewoon de som wil berekenen, dat het gemakkelijk gaat met een array.
Maar, ik moet een lijst krijgen van de gebruiker en die lijst bevat elementen van een klasse die ik zelf heb gemaakt. Nu kan die lijst verschillen van grote en zou ik in theorie moeten een gegeven vragen bij elk element en dan terug in die lijst zetten met dat extra element, dus dan gaat dit niet met een array.

Het is misschien niet volledig juist of goed geformuleerd wat ik moet doen, maar dit is niet zo belangrijk.


Maar als jullie zeggen dat je niet kunt spelen met het aantal variablen is, mijn vraag opgelost, want dit wou ik alleen maar weten.

Ik nu nog wat verder zoeken op een dwaas complex probleem.

Verwijderd

Je kunt wel de methodes overloaden natuurlijk. Je krijgt dan alleen niet een variabel aantal parameters, maar wel meerdere opties om een methode aan te roepen:

voorbeeld:

Java:
1
2
3
4
5
6
7
public boolean connect(String serverName) {
   // connect met een default poort, bijvoorbeeld 6667
}

public boolean connect(String serverName, int serverPort) {
   // connect met de opgegeven poort
}

  • Hephaistus
  • Registratie: September 2003
  • Laatst online: 23-06-2025
ik snap wat je bedoelt maar dat is niet echt de bedoeling

  • Confusion
  • Registratie: April 2001
  • Laatst online: 01-03-2024

Confusion

Fallen from grace

Green_Yoda schreef op 07 december 2003 @ 13:48:
Maar, ik moet een lijst krijgen van de gebruiker en die lijst bevat elementen van een klasse die ik zelf heb gemaakt. Nu kan die lijst verschillen van grote en zou ik in theorie moeten een gegeven vragen bij elk element en dan terug in die lijst zetten met dat extra element, dus dan gaat dit niet met een array.
Waarom niet? Je kan toch een array met elementen van die klasse maken en vervolgens in de functie een array van die klasse laten vullen en die returnen?
Even snel in pseudocode:

klasse[] functienaam(klasse[] arr1) {

loop over i: arr1[i].extraelement = bla;

return arr1;
}

Wie trösten wir uns, die Mörder aller Mörder?


  • Hephaistus
  • Registratie: September 2003
  • Laatst online: 23-06-2025
ja, je hebt gelijk. maar ik zie dat ik mijn probleem niet juist heb neergeshreven.
wat je nu geschreven hebt kan ik toch niets doen, aangezien dat wat erin die lijst moet zitten zijn objecten van een andere klasse.
En weer leg ik het verkeerd uit.
nu zie hoe ik moelijk het soms kan zijn een probleem uit te leggen.
Maar laat het maar zitten, ik zal het zelf zoeken :r .

Het enigste antwoord dat ik zocht was of je kon spelen met het aantal variabelen.
En ik weet nu dat dit niet gaat en zal niet verder gaan zoeken in die richting, maar ergens anders.

That's it :)
THx

  • ACM
  • Registratie: Januari 2000
  • Niet online

ACM

Software Architect

Werkt hier

De manier binnen Java zou eigenlijk niet het gebruiken van array's moeten zijn. Toch weer jammer dat er allemaal van die non-OO-oplossingen geboden worden :)

Eigenlijk is het netter om dan op zijn minst een Collection mee te geven (een ArrayList ofzo). Maar het is denk ik mooier om een aparte klasse te maken, die ook gelijk dit soort dingen beheerst:
waarbij (int a, int b,...) het aantal hier verschilt afhankelijk van x
Vb:als x=3 dan zijn er 3 variabelen. nl (int a, int b, int c).
Dus in 1 enkele klasse afdwingen dat er max x elementen zijn, etc :)

(en als je dat dan intern doet met een integer-array, sja, das dan weer evt wel handig, maar 't scheelt je een hoop geklooi met arrays en checks op allerlei onhandige plaatsen :) )

  • Eelke Spaak
  • Registratie: Juni 2001
  • Laatst online: 27-05 10:14

Eelke Spaak

- Vlad -

Misschien wordt het probleem wat duidelijker voor ons als je de originele code post, en niet een simplificatie.

TheStreme - Share anything with anyone

Pagina: 1