[java] container voor classes

Pagina: 1
Acties:

  • dolfje
  • Registratie: Februari 2005
  • Laatst online: 09-01 22:27
hoi iedereen,

'k heb ne vraagje over Java.

Nu heb ik een class 'node' en ik ga meerdere instanties van deze class maken.
Nu dacht ik eerst om dat op te slaan in een array, zodat ik weet welke 'node' welke is,
maar dit wil maar niet lukken.

Het probleem is ook een beetje dat er de ene keer maar 12 'nodes' zijn, terwijl
soms 14 of meer zijn. Dus is het niet mogelijk om ze allemaal zelf te scripten.
Het zou ook gemakkelijk zijn als het dus mogelijk was om ze een voor een aan te roepen en
bepaalde functies ermee uit te voeren. En ook maar bepaalde 'nodes' aan te roepen.

Weet iemand hoe dit kan,
'k ben al een heel tijde aan het zoeken,
maar het antwoord wil niet komen

groetjes dolfje

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-02 04:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Ik snap er niets van, bedoel je niet gewoon zoiets als een ArrayList of een Vector?
En noem het gewoon programmeren, geen scripten ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Collections is het antwoord. Waarschijnlijk zoek je zoiets als List<Node> icm foreach.

  • dolfje
  • Registratie: Februari 2005
  • Laatst online: 09-01 22:27
ja, 'k heb nog een keer rondgekeken naar wat jullie zeiden, maar 't lukt nog altijd niet.
Ik zal nog een keer proberen het uit te leggen. Hopelijk kunnen jullie me dan een gedetailleerder antwoord geven.

ik heb dus een class 'node', de class kan verschillende dingen, maar het belangrijkste is dat hij random een andere 'node' kiest oftewel een nieuwe 'node' aanmaakt, die al deze dingen dus ook kan.

Dus ik dacht aan:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
class start 
{
    public statc .... container ....;
    public static void main(String[] args) 
    {
        container.put( new node );
        container[0].connect();
    }
}
class node
{
    public static int id;
    public void connect()
    {
        // random zoeken kijken of nieuwe gemaakt moet worden
        {
            container.put( new node );
            container[].connect();
        }
        else
        {
            container[rand()].connect();
        }
    }
}


zoiets moet het zijn, maar het wil niet lukken

[ Voor 4% gewijzigd door dolfje op 26-05-2006 16:44 ]


  • Woy
  • Registratie: April 2000
  • Niet online

Woy

Moderator Devschuur®
Kijk dan eens naar de ArrayList of Vector zoals .oisyn al zegt.

“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”


  • dolfje
  • Registratie: Februari 2005
  • Laatst online: 09-01 22:27
ik heb dat al geprobeert, maar ik krijg problemen als ik die '.connect();' wil uitvoeren:

code:
1
2
Object el = container.get(counter);
el.connect();


omdat die '.connect();' van die class 'node' komt en hij heeft het verband niet door.
en ik kan ook niet meer aan de id van de class 'node'.

[ Voor 17% gewijzigd door dolfje op 26-05-2006 17:13 ]


  • truegrit
  • Registratie: Augustus 2004
  • Laatst online: 16-02 15:05
misschien moet je hem even naar een node casten, (node)el dus

hallo


  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

dolfje schreef op vrijdag 26 mei 2006 @ 17:11:
ik heb dat al geprobeert, maar ik krijg problemen als ik die '.connect();' wil uitvoeren:

code:
1
2
Object el = container.get(counter);
el.connect();


omdat die '.connect();' van die class 'node' komt en hij heeft het verband niet door.
en ik kan ook niet meer aan de id van de class 'node'.
Dat komt ook omdat de declaratieve type van el van Object is, en daar is de methode niet in aanwezig in de interface. Je dient in dit geval expliciet te casten.
Java:
1
2
3
4
5
Object el = container.get(counter);
if (el instanceof Node)
{
    ((Node)el).connect();
}


of je gebruikt een generic collection:
Java:
1
2
3
4
List<Node> container = new ArrayList<Node>();
container.add(new Node());
Node n = container.get(0);
n.connect();

[edit]
N.B. Generics werken alleen vanaf Java 5

[ Voor 18% gewijzigd door prototype op 26-05-2006 17:20 ]


  • .oisyn
  • Registratie: September 2000
  • Laatst online: 21-02 04:31

.oisyn

Moderator Devschuur®

Demotivational Speaker

Misschien wordt het tijd om eerst wat documentatie over Java in het algemeen door te nemen? Want ik krijg niet echt het idee dat je nou echt weet waar je mee bezig bent :)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • dolfje
  • Registratie: Februari 2005
  • Laatst online: 09-01 22:27
't probleem is dat het nog altijd niet werkt:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class start
{
    public static void main(String[] args) 
    {
        int str_len, i;
        neuron tmp;
        
        str_len = alfa.length();
        for(i=0; i<str_len; i++ )
        {
            tmp = new neuron();
            tmp.id = i; 
            container.add(tmp);
        }

        for(i=0; i<str_len; i++ )
        {
            Object el = container.get(i);
            if (el instanceof neuron)
            {
                ((neuron)el).connect();
            }
        }

}
class neuron
{
    public static int id;
    public void connect()
    {
        System.out.println( "node:" + id );
    }
}


dit geeft allemaal 'node:25node25', terwijl hij nu toch 'node:1node:2...'

[edit]
alfa is gewoon een String.

[ Voor 8% gewijzigd door dolfje op 26-05-2006 17:43 ]


  • momania
  • Registratie: Mei 2000
  • Laatst online: 20:11

momania

iPhone 30! Bam!

Java:
1
2
3
4
5
6
7
8
        
        str_len = alfa.length();
        for(i=0; i<str_len; i++ )
        {
            neuron tmp = new neuron();
            tmp.id = i; 
            container.add(tmp);
        }

Aanmaken van je tijdelijke neuron moet je wel binnen je loop doen. Dus de referentie ook daar declareren. Anders zit je iedere keer alles wat je al in je collection hebt, ook te vernieuwen. Vandaar dat je eindigd met een collectie van neuron objecten die het id hebben wat de laatste keer is aangemaakt ;)

Maar zoals eerder gezegd: ik denk dat je je maar eens wat beter in java moet gaan verdiepen. Ik heb ook het idee dat je geen idee hebt waar je mee bezig bent ;)

[edit]
Wacht, volgens mij loop je nu door je collectie met een int i, maar gebruik je de i uit een scope hoger om je neuron uit je collectie te halen. Die i staat altijd op 25 ;)

Je bent dus allemaal variable namen nu door elkaar aan het halen...

Ik zit weer niet goed te kijken... code is ook zo'n zooitje :X


tipje van de zijkant:
een for loop doe je meestal met een int in de scope van de loop.
Java:
1
2
3
for (int i=0; i< ietsGroters; i++) {
  // etc
}

[ Voor 29% gewijzigd door momania op 26-05-2006 17:51 ]

Neem je whisky mee, is het te weinig... *zucht*


  • Swaptor
  • Registratie: Mei 2003
  • Laatst online: 16-02 22:21

Swaptor

Java Apprentice

Ik vrees dat het hier ligt aan de declaratie
Java:
1
public static int id;

Er is altijd maar 1 waarde van die variabele aanwezig, ongeacht het aantal instanties.
Je hebt 25 nodes aangemaakt is mijn gokje?
Aangezien je de waarde keer op keer overschrijft bij de create van een nieuwe is het getal wat geretourneerd wordt dus automagisch het hoogste getal wat is gecreeerd.

Correct me if i'm wrong though.

Ontdek mij!
Proud NGS member
Stats-mod & forum-dude


  • momania
  • Registratie: Mei 2000
  • Laatst online: 20:11

momania

iPhone 30! Bam!

Swaptor schreef op vrijdag 26 mei 2006 @ 17:51:
Correct me if i'm wrong though.
omg, je hebt gelijk :X 8)7 ik ben echt aan me weekend toe zie ik al wel weer :+

[ Voor 15% gewijzigd door momania op 26-05-2006 17:53 ]

Neem je whisky mee, is het te weinig... *zucht*


  • dolfje
  • Registratie: Februari 2005
  • Laatst online: 09-01 22:27
@swaptor:het is juist wat je zegt, het is die static.

Iedereen bedankt
'k heb er veel van opgestoken en kan weer verder gaan programmeren _/-\o_

[ Voor 36% gewijzigd door dolfje op 26-05-2006 17:55 ]

Pagina: 1