Toon posts:

[Java] Array perikelen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo buren van /13 :) Ik zit met een misschien wat basic probleempje in Java maar ik kan er zowaar niets over vinden tot nu toe op internet en op GoT. Ik ben de scriptomgeving van Flash gewend maar nu ik in Java ben begonnen met programmeren kom ik een aantal problemen tegen.

Waaronder op dit moment bij het werken met arrays, ik heb een multilevel spelletje met daarin een 2-dimensionale array van 25 bij 25 die het veld voorsteld en bestaat uit allemaal nulletjes. Nu wil ik daarin op een aantal plaatsen van de 0 een 1 maken (waardoor er dus een border in de game ontstaat) en dat zou ik dus aan kunnen geven door field[1][1]=1; field[1][2]=1; etc. Maar nu wil ik die coördinaten liever uit een array trekken, dus ik had bedacht een xpos en een ypos array aan te maken met daarin de coördinaten om een 1 neer te zetten. Binnen Flash zou ik dat zo doen:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
xpos=[1,1,1,2,2,2];
ypos=[1,2,3,1,2,3];

// als ik dan vervolgens een nieuwe map zou hebben zou ik dit kunnen doen:

xpos=[10,10,10,20,20,20];
ypos=[10,11,12,21,22,23];

// en dan in het veld zetten:

var i=xpos.length;
while(i--){
    var px=xpos[i];
    var py=ypos[i];
    field[py][px]=1;
}


Maar dit lukt me niet in Java, ik probeer dus iets als het volgende:

code:
1
2
3
4
5
xpos[]={1,2,3,4,5};

// en vervolgens met overschijven:

xpos={10,11,12,13,14};


maar dat gaat dus niet. Daarna heb ik geprobeerd de array tussendoor te deleten door bijv. delete xpos; maar dat kan dus ook niet.

Hoe moet ik dit dan wel aanpakken?

Verder heb ik ook nog een aantal keer geprobeerd een array dynamisch aan te spreken, in Flash zou ik kunnen doen:

code:
1
2
3
4
5
6
7
bar1=["a","b","c"];
bar2=["b","c","d"];

var foo=eval("bar"+2);
var i=foo[0];

// i levert dan "b" op


Op deze manier het dynamisch samenstellen van een array naam en vervolgens aanspreken is me ook op geen enkele manier gelukt binnen Java, is dit wel mogelijk? Mijn dank alvast!

  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 27-05 22:34
In Java zul je een type moeten op geven. Bijv voor een integer array:

int[] xpos = new int[]{1,2,3,4,5};

En delete kent java niet, die doet zelf aan garbage collection. Gewoon een nieuw int[] toekennen is genoeg.

Verwijderd

Topicstarter
Jelmer schreef op 10 januari 2004 @ 17:47:
In Java zul je een type moeten op geven. Bijv voor een integer array:

int[] xpos = new int[]{1,2,3,4,5};

En delete kent java niet, die doet zelf aan garbage collection. Gewoon een nieuw int[] toekennen is genoeg.
Ik weet niet zeker of ik je goed begrijp want ik heb nu het volgende gedaan:

int[] xpos=new int{1,2,3,4,5};
int[] xpos=new int{2,3,4,5,6};

maar dan krijg ik de melding, 'xpos is already defined', vandaar het zoeken naar iets soort gelijks aan delete :)


edit: Stom, vergeten het binnen een method te zetten, het is gelukt mijn dank :)

Nu zit ik alleen nog met dat dynamisch aanroepen van een array probleem.

[ Voor 15% gewijzigd door Verwijderd op 10-01-2004 18:38 ]


  • Jelmer
  • Registratie: Maart 2000
  • Laatst online: 27-05 22:34
:?

Uhm, ik weet niet waar jij je java kennis vandaan hebt gehaald, maar daar zijn ze je dan vergeten te vertellen dat je variablen declareerd:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
//declaratie
int x;

//asignment
x = 24;
x +=62;

System.out.println("X=" + x);


//declaratie+assignment
String text = new String("tweakers.net");
System.out.println(text);

//assignment
text = new String("een andere string");
System.out.println(text);



Jouw probleempje:

Java:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
final int FIELD_SIZE = 25;
int[] field = new int[FIELD_SIZE][FIELD_SIZE];

for (int i=0; i < FIELD_SIZE; i++)
{
   java.util.Arrays.fill(field[i],0);
}

int[] x = new int[]{1,2,3,4,5};
int[] y;

x = new int[]{7,6,3,2};
y = new int[]{6,4,3,1};

for (int i = 0; i<x.length; i++)
{
      field[x[i], y[i]]=1;
}



En nu snel beginnen met een goed boek over java.. ;)

[ Voor 38% gewijzigd door Jelmer op 10-01-2004 19:36 ]


  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
ahem, bedoelt TS nu Java of JAvaScript?

* zneek denkt dat mensen die dat verschil niet begrijpen niet aan Java zouden moeten beginnen...

Verwijderd

Topicstarter
Jelmer schreef op 10 januari 2004 @ 19:30:
:?

Uhm, ik weet niet waar jij je java kennis vandaan hebt gehaald, maar daar zijn ze je dan vergeten te vertellen dat je variablen declareerd:

...

En nu snel beginnen met een goed boek over java.. ;)
Moet me idd nog meer verdiepen in Java, je hebt helemaal gelijk ~ I am ashamed :)
Thnx iig, het niet declareren van variabelen is een afwijking begonnen door Flash waar dat dus niet nodig is, het zal vanzelf wel goedkomen, sowieso moet je in Actionscript 2 wel variabelen declareren en ga ik door met Java!
ahem, bedoelt TS nu Java of JAvaScript?

* zneek denkt dat mensen die dat verschil niet begrijpen niet aan Java zouden moeten beginnen...
Ik zie geen aanleiding waarom je uit mijn post zou opmaken dat ik het verschil niet zou weten tussen Java en Javascript, zeker niet nadat ik al gereplied had dat het is gelukt, ik zie de zin van je reply dus niet!

  • zneek
  • Registratie: Augustus 2001
  • Laatst online: 08-02-2025
Verwijderd schreef op 10 januari 2004 @ 22:15:
[...]

[...]

Ik zie geen aanleiding waarom je uit mijn post zou opmaken dat ik het verschil niet zou weten tussen Java en Javascript, zeker niet nadat ik al gereplied had dat het is gelukt, ik zie de zin van je reply dus niet!
Ik had inderdaad niet goed genoeg gelezen.... :+

Toch nog een nuttige tip: kijk eens naar OO ontwerp. Je kunt het jezelf een stuk makkelijker maken door een goeie object structuur te ontwerpen. Van die irritante details als "hoe werkt een array" daar wil je je maar 1 keer aan storen. Ontwerp je objecten op zo'n manier dat je niet op verschillende niveaus met dezelfde problemen loopt te hannessen. Daarnaast zijn er elegantere constructies dan arrays te verzinnen. Beetje afhankelijk van je object ontwerp maar met Collections, SortedSets, HashSets kun je hele leuke dingen doen, die erg makkelijk in het (programmeer)gebruik zijn.
Pagina: 1