[JAVA] Arrays en ArrayList?

Pagina: 1
Acties:

  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
Beste Gotters..

Ik heb het idee dat dit een zeer n00b probleem is maar ik heb echt geen idee wat ik fout doe. Hieronder mijn code.

Java:
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
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
import java.util.*;

public class Applet1 extends Applet 
{
  Label lblVraag;
  Checkbox ant01, ant02, ant03, ant04;
  Vraag[] vraag;
  
  public void init()
  {

    vraag[0] = new Vraag("test");
    vraag[1] = new Vraag("test2");
    
    vraag[0].addAntwoord("bla");
    vraag[0].addAntwoord("bla2");
   
    ant01 = new Checkbox("Dit is een test");
    ant02 = new Checkbox("Dit is een test");
    ant03 = new Checkbox("Dit is een test");
    ant04 = new Checkbox("Dit is een test");
    
    add(ant01);
    add(ant02);
    add(ant03);
    add(ant04);
  }
}



class Vraag
{
  private String vraag;
  
  
  public Vraag(String vraag)
  {
    this.vraag = vraag;
  }
  
  public void addAntwoord(String antwoord)
  {
    Object temp = antwoord;
    ArrayList list = new ArrayList();
    list.add(temp);
    
    Object str = list.get(0);
    System.out.println(str);
  }
  
  public String getVraag()
  {
    return vraag;
  }
}



Dit ziet er allemaal erg leuk uit.
En hetgene dat het moet doen dat is dus als ik dit programma opstart wordt er Array gemaakt van Type Vraag hier worden dus referenties naar toe gemaakt
en wordt wat in gestopt.

maar hier gaat het blijkbaar fout.
als ik dus de regel:

Java:
1
vraag[0] = new Vraag("Test");


heb geeft ie als melding:

code:
1
2
3
4
5
6
7
8
9
java.lang.NullPointerException

    at test.Applet1.init(Applet1.java:18)

    at com.borland.jbuilder.runtime.applet.AppletTestbed.startApplet(Unknown Source)

    at com.borland.jbuilder.runtime.applet.AppletTestbed.main(Unknown Source)

Exception in thread "main"


En ik heb eerlijk gezegd geen idee wat hier mis mee is..

Misschien dat iemand mij kan helpen.

iRacing Profiel


  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Een array heeft een fixed size. Bij het declareren zul je dus moeten aangeven hoeveel elementen er maximaal in de array kunnen. Een arraylist is een soort handler classe die om Object[] is gebouwd. Een instantie van zo'n classe zorgt ervoor dat je objecten kunt toevoegen aan je lijst zonder deze vooraf expliciet op te geven hoe groot deze lijst mag worden (intern wordt per add dat de huidige limiet overschrijdt het aantal maximale elementen vermenigvuldigd met factor r).

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Ik ken geen Java, maar in C++ is het bij mijn weten zo dat als je een array van objecten wil hebben, dit een pointer naar een pointer moet zijn.
C++:
11
Vraag** vraag;


Ok, onzin dus. :)

[ Voor 9% gewijzigd door NMe op 18-11-2004 01:08 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

Je hebt je array alleen nog maar gedeclareerd, nog niet aangemaakt. Dat doe je zo:
Java:
1
2
3
4
public void init() 
  { 
    vraag = new Vraag[4];
    vraag[0] = new Vraag("test"); 

Wil je later er meer in stoppen, dan zou ik ArrayList gebruiken, dat werkt totaal anders, ik zou dan even op de Sun site zoeken naar de Collections tutorial.

"Beauty is the ultimate defence against complexity." David Gelernter


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

NMe84 schreef op donderdag 18 november 2004 @ 01:07:
Ik ken geen Java, maar in C++ is het bij mijn weten zo dat als je een array van objecten wil hebben, dit een pointer naar een pointer moet zijn.
C++:
11
Vraag** vraag;


Ok, onzin dus. :)
Java heeft gelukkig geen expliciete pointers. Dan nog zou het niet werken op jouw manier in C. Je bent namelijk de pointer array vergeten te initialiseren op de heap(new/malloc/whatever).

"Beauty is the ultimate defence against complexity." David Gelernter


  • NMe
  • Registratie: Februari 2004
  • Laatst online: 19-05 21:24

NMe

Quia Ego Sic Dico.

Macros schreef op donderdag 18 november 2004 @ 01:10:
Java heeft gelukkig geen expliciete pointers. Dan nog zou het niet werken op jouw manier in C. Je bent namelijk de pointer array vergeten te initialiseren op de heap(new/malloc/whatever).
offtopic:
In C zou het sowieso niet helpen met classes/objecten, aangezien dat alleen in C++ kan. :+

En ik gaf uiteraard alleen de declaratie in de hoop dat TS daar iets mee zou kunnen, maar dat is blijkbaar niet toepasbaar op Java. :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

NMe84 schreef op donderdag 18 november 2004 @ 01:13:
[...]

offtopic:
In C zou het sowieso niet helpen met classes/objecten, aangezien dat alleen in C++ kan. :+

En ik gaf uiteraard alleen de declaratie in de hoop dat TS daar iets mee zou kunnen, maar dat is blijkbaar niet toepasbaar op Java. :)
Ach, in C kan je structs gebruiken, dan heb je alleen geen methodes, maar verder is het functioneel bijna equivalent.

"Beauty is the ultimate defence against complexity." David Gelernter


  • jvaneijk
  • Registratie: Mei 2003
  • Laatst online: 11-03 09:53
Oke tnx ik ben er nu achter dat ik mijn array vergeten was een size te geven :S


Even niet praten over C / C++ daar heb ik mijn buikie wel weer even van vol daar ga ik in mijn afstudeerfase wel weer eens mee beginnen :P

[ Voor 48% gewijzigd door jvaneijk op 18-11-2004 01:20 ]

iRacing Profiel


  • CyBeR
  • Registratie: September 2001
  • Niet online

CyBeR

💩

Macros schreef op donderdag 18 november 2004 @ 01:15:
[...]

Ach, in C kan je structs gebruiken, dan heb je alleen geen methodes, maar verder is het functioneel bijna equivalent.
Zelfs methodes kun je met iets meer moeite wel na-apen. Je kunt namelijk ook pointers naar functies maken. Moet je alleen een pointer naar de struct als argument meegeven.

All my posts are provided as-is. They come with NO WARRANTY at all.


  • Macros
  • Registratie: Februari 2000
  • Laatst online: 30-04 09:28

Macros

I'm watching...

CyBeR schreef op donderdag 18 november 2004 @ 01:37:
[...]


Zelfs methodes kun je met iets meer moeite wel na-apen. Je kunt namelijk ook pointers naar functies maken. Moet je alleen een pointer naar de struct als argument meegeven.
Was/ben bezig met een OO compiler die naar C compiled, dus alles kan je in C simuleren, maar dat is niet echt de bedoeling in normale programma's ;)

"Beauty is the ultimate defence against complexity." David Gelernter


Verwijderd

je moet de lengte van je array aangeven !
net zoals Macros zei!
de rest zit een beetje af te dwalen .. net zoals altijd ..
dit is net zoiets als : ik heb een probleem met mijn auto ! kan iemand mij helpen...?
de antwoorden zouden zijn ..
joaaaa ...ik zou maar een nieuwe auto kopen hoor ..
joaahh .. ik weet het niet hoor .. wil je niet met de taxi op vakantie ?
tjah .. dan blijf je bezig ..

maar dus de antwoord had Macros al gegeven

  • JeroenTheStig
  • Registratie: Mei 2000
  • Laatst online: 14:55
wat is trouwens jouw idee achter de methode addAntwoord(String antwoord)?

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 21-02 23:50
Macros schreef op donderdag 18 november 2004 @ 10:04:
[...]

Was/ben bezig met een OO compiler die naar C compiled, dus alles kan je in C simuleren, maar dat is niet echt de bedoeling in normale programma's ;)
Uiteindelijk wordt alles omgezet in machinecodes, dus je kunt elke high-level language simuleren in een lower level language. ;) Of het zinnig is is een ander verhaal.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


  • prototype
  • Registratie: Juni 2001
  • Niet online

prototype

Cheer Bear

Verwijderd schreef op donderdag 18 november 2004 @ 10:17:
je moet de lengte van je array aangeven !
net zoals Macros zei!
de rest zit een beetje af te dwalen .. net zoals altijd ..
dit is net zoiets als : ik heb een probleem met mijn auto ! kan iemand mij helpen...?
de antwoorden zouden zijn ..
joaaaa ...ik zou maar een nieuwe auto kopen hoor ..
joaahh .. ik weet het niet hoor .. wil je niet met de taxi op vakantie ?
tjah .. dan blijf je bezig ..

maar dus de antwoord had Macros al gegeven
Erm, mijn antwoord komt anders wel overeen met die van Macros op het expliciete voorbeeld na; persoonlijk vind ik dat men met een omschrijving zal moeten volstaan, immers zijn we geen debuggers hier.
Pagina: 1