Toon posts:

[Java]NullPointerException

Pagina: 1
Acties:
  • 65 views sinds 30-01-2008

Verwijderd

Topicstarter
Hallo,

Ik ben aan het programmeren voor school, nu ben ik bezig met een applet. Ik compile hem, hij vind geen fouten in de code en vervolgens krijg ik dit:

java.lang.NullPointerException
at java.awt.Container.addImpl(Container.java:345)
at java.awt.Container.add(Container.java:228)
at broodjes.Applet1.init(Applet1.java:22)
at com.borland.jbuilder.runtime.applet.AppletTestbed.startApplet(Unknown Source)
at com.borland.jbuilder.runtime.applet.AppletTestbed.main(Unknown Source)


dit is mijn code tot nu toe:

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
34
35
36
37
38
39
40
41
42
package broodjes;

import java.awt.*;
import java.awt.event.*;
import java.applet.*;

/**
 * <p>Title: </p>
 * <p>Description: </p>
 * <p>Copyright: Copyright (c) 2007</p>
 * <p>Company: </p>
 * @author unascribed
 * @version 1.0
 */

public class Applet1 extends Applet
implements ActionListener {
  TextField witaantal, bruinaantal;
  Button bereken;

  public void init() {
  add(bruinaantal);
  add(witaantal);
  add(bereken);
  setLayout(null);
  bereken.addActionListener( this );
  witaantal.setBounds(45,45,75,20);
  bruinaantal.setBounds(170,45,75,20);
  bereken.setBounds(105,115,85,20);
     }
       public void paint (Graphics g) {
  g.drawString("Broodjes Berekenaar door Jeffrey en Tom",40,10);
  g.drawString("Totale kosten:",40,180);
  g.drawString("Aantal witte broodjes",20,35);
  g.drawString("Aantal bruine broodjes",150,35);
    }

    public void actionPerformed( ActionEvent e ) {
     setBackground ( Color.blue );
     }

 }


Ik snap niet waar deze error vandaan komt, kan iemand mij alsjeblieft helpen?

Alvast bedankt _/-\o_

Verwijderd

Java:
1
2
3
 add(bruinaantal);
  add(witaantal);
  add(bereken);
Zijn niet correct geinitialiseerd.

Java:
1
2
3
4
5
6
7
8
TextField witaantal = new TextField();
TextField bruinaantal = new TextField();
Button bereken = new Button("Bereken");
 
  public void init() {
  add(bruinaantal);
  add(witaantal);
  add(bereken);


Probeer dat eens?

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
je bruinaantal is NULL ¿

Verwijderd

Topicstarter
Ok, bedankt ik ga eens even proberen

Thx, dat werkt! :)

[ Voor 23% gewijzigd door Verwijderd op 26-01-2007 17:41 ]


Verwijderd

Het is verstandig om even goed te kijken naar je foutmeldingen
at broodjes.Applet1.init(Applet1.java:22)
Je krijgt een NullPointerException op regel 22...
Regel 22:
Java:
1
add(bruinaantal);

Het meest logisch (imho) is dan dat bruinaantal nog null is, dan ga je dus zoeken naar je declaratie van bruinaantal:
Java:
1
TextField witaantal, bruinaantal;

En dan zie dat ze (witaantal en bruinaantal) nog niet geinitialiseerd zijn :)

Verwijderd

Topicstarter
Thx, dat soort informatie kan ik goed gebruiken, aangezien ik pas een paar weken geleden met java begonnen ben. De bedoeling van dit project is natuurlijk ook zo veel mogelijk te leren.

:)

  • rrrandy
  • Registratie: Juli 2005
  • Laatst online: 27-06 13:00
Nog een tip: leer debuggen.

Zorg dat je de sources hebt van de libraries die je gebruikt. Je zult zien dat waar jij

Java:
1
add(bruinaantal);


doet er onderwater (step into de add-functie) ergens een functie wordt aangeroepen à la


Java:
1
bruinaantal.functie();


Aangezien aantalbruin null is (niet geinitialiseerd) heeft hij geen idee wat hij moet doen en krijg je een NullPointerException.

Verwijderd

Topicstarter
K, thx :)

  • JKVA
  • Registratie: Januari 2004
  • Niet online

JKVA

Design-by-buzzword fanatic

rrrandy schreef op vrijdag 26 januari 2007 @ 18:21:
Nog een tip: leer debuggen.

Zorg dat je de sources hebt van de libraries die je gebruikt. Je zult zien dat waar jij

Java:
1
add(bruinaantal);


doet er onderwater (step into de add-functie) ergens een functie wordt aangeroepen à la


Java:
1
bruinaantal.functie();


Aangezien aantalbruin null is (niet geinitialiseerd) heeft hij geen idee wat hij moet doen en krijg je een NullPointerException.
Beetje over the top, iemand die een paar weken geleden begonnen is, uitleggen wat libraries uberhaupt zijn, hoe je sources eraan attached en dan nog die complexe code in stuurt waar zelfs een ervaren programmeur de weg snel kwijt is. ;-)

Nee, mijn advies is om gewoon lekker te blijven klooien met Applets of wat andere tools probeert, zoals JBuilder, waarmee je een gebruikersinterface in elkaar klikt (en dan natuurlijk wel kijken wat er onder water gegenereerd wordt) of blueJ. Dat schijnt tegenwoordig ongeveer het beste programma te zijn om mensen Java te leren.


Dat wil natuurlijk niet zeggen dat rrrandy ongelijk heeft. Door de source code van je externe libraries stappen is super handig, maar tijdens het aanleren van de taal zou ik er niet aan beginnen. Geloof me, dan wil je nog niet weten wat Java achter de schermen allemaal voor je doet. :)

Fat Pizza's pizza, they are big and they are cheezy


Verwijderd

rrrandy schreef op vrijdag 26 januari 2007 @ 18:21:
Nog een tip: leer debuggen.

Zorg dat je de sources hebt van de libraries die je gebruikt. Je zult zien dat waar jij

Java:
1
add(bruinaantal);


doet er onderwater (step into de add-functie) ergens een functie wordt aangeroepen à la


Java:
1
bruinaantal.functie();


Aangezien aantalbruin null is (niet geinitialiseerd) heeft hij geen idee wat hij moet doen en krijg je een NullPointerException.
Weer wat geleerd :)

  • whoami
  • Registratie: December 2000
  • Laatst online: 00:54
Het is niet de bedoeling dat anderen jouw code hier debuggen; een NullPointerException is - zoals reeds gezegd - niet gealloceerd geheugen dat je aanspreekt.
Je IDE zal vast wel de nodige debug-tools hebben om stap voor stap door je code te lopen, en te zien welke variable er niet gealloceerd is.
Debuggen moet je zelf kunnen.

https://fgheysels.github.io/

Pagina: 1

Dit topic is gesloten.