Archief - [PROG]JAVA Variabele naamgeving

Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.

/\quila

Legacy Member
Hoi,

Voor een programma moet ik met een hele lijst vecor3d's werken. Zo een lijst is telkens numeriek opgebouwd, bv v1, v2 , ..., v12.
Ik zou deze telkens in een ArrayList moeten steken, maar
.add(v1);
.add(v2);
...
.add(v12);
is nogal behoorlijk wat werk, zeker omdat deze lijst vaak nog langer is als 12. Is het mogelijk om dit in een lus te steken?

Mvg,
Aquila

MacK

Legacy Member
op deze manier niet.

Ik ben geen java kenner maar ik vermoed dat vector3d gewoon een punt in een 3d ruimte is...

maak dan gewoon een aray van die vector3d

iets in de zin van (ik ken niet de exacte constructors enzo)

Code:
Vector3d[] array = new Vector3d[12];

 for(int i = 0; i< array.length ; i++)
{
          array[i] = new Vector3d(mijnparametershier);
}

// en dan elke referentie van die array in die arraylist steken
for(int i = 0; i < array.length; i++)
{
          mijnArrayList.add(array[i]);
}

nogmaals java is niet mijn programmeertaal (buiten op school), dus ik kan hier en daar wel missen tegen de notatie.. Maar ik vermoed toch dat als je het typwerk wil verminderen, dat dit the way to go is...
Misschien dat de meer java-experienced mensen je nog verder kunnen helpen

De vraag is natuurlijk ook of dit allemaal typen jouw werk verminderdt.. want als je elke Vector3d appart moet gaan initialiseren (vb : als er geen bepaalde systematiek tussen de Vector3d's bestaat zodat je het niet in die for-lus kan zetten)

/\quila

Legacy Member
Daar dacht ik ook al aan, maar het probleem is dat het specifiek een ArrayList moet zijn, deze wordt later immers gebruikt door een opgegeven -niet te wijzigen- klasse die als input een ArrayList verlangt.

MacK

Legacy Member
wel? ik steek toch alles in die arraylist:

mijnArrayList.add(array) in die for-lus. Ik vermoed dat die .add afkomstig is van een arraylist

*edit* heb m'n eerste post aangepast..

killgore

Legacy Member
Werk van den eerste keer met een arraylist of andere container ipv die tussenstap met array?

MacK

Legacy Member
mja nu je het zegt :crazy: (stom van me) . Doordat ie eerst al die objecten wou aanmaken, dacht ik daar niet aan.

for(int i = 0; i < 12 ; i++)
{
mijnArrayList.add(new Vector3(mijnParameters));
}

kan ook natuurlijk, tenzij, wederom, er geen systematiek tussen die vectoren zit. dan moet je ze allemaal appart doen.

/\quila

Legacy Member
Dit lukt spijtig genoeg niet, omdat -zoals je ook aanhaalde- de parameters verschillen per vector. En deze verschillen zijn niet in de lus te verwerken.

Ik vind het wel bizzar dat dit niet een mogelijkheid is binnen java. Een gelijkaardig probleem stelde zich ook al binnen hetzelfde project, dit kon toen wel worden herschreven, maar bracht veel werk met zich mee (achteraf gezien konden we beter copy-paste gebruikt hebben, maar dat is natuurlijk "not done").

Zal deze keer dan toch maar copy-pasten. Toch merci voor de reply's :)

Kn0t

Legacy Member
In plaats van telkens het nummertje in je variabele naam te verhogen, kan je toch, zoals gezegd, gewoon met een array werken? Het maakt niet uit de of properties van je vectoren af te leiden zijn uit de index of niet.

Code:
v1 = new Vector3D();
v1.setBla(bla);
v2 = new Vector3D();
v2.setBla(bla);

kan je toch even makkelijk schrijven als

Code:
v[1] = new Vector3D();
v[1].setBla(bla);
v[2] = new Vector3D();
v[2].setBla(bla);

En een array kan je naar een lijst converteren met de utility method Arrays.asList().
Het archief is een bevroren moment uit een vorige versie van dit forum, met andere regels en andere bazen. Deze posts weerspiegelen op geen enkele manier onze huidige ideeën, waarden of wereldbeelden en zijn op sommige plaatsen gecensureerd wegens ontoelaatbaar. Veel zijn in een andere tijdsgeest gemaakt, al dan niet ironisch - zoals in het ironische subforum Off-Topic - en zouden op dit moment niet meer gepost (mogen) worden. Toch bieden we dit archief nog graag aan als informatiedatabank en naslagwerk. Lees er hier meer over of start een gesprek met anderen.
Terug
Bovenaan