Home Upgrade Search Memberlist Extras Hacker Tools Award Goals Help Wiki Contact

Java 

NullPointerException

Hi,

I'm creating a assignment for school. I'm getting this NullPointerException error and I don't know to solve it.

Code
Exception in thread "main" java.lang.NullPointerException
    at kofferslot.Kofferslot.<init>(Kofferslot.java:18)
    at kofferslot.Applicatie.main(Applicatie.java:7)
/Users/username/Library/Caches/NetBeans/8.1/executor-snippets/run.xml:53: Java returned: 1
BUILD FAILED (total time: 0 seconds)

The exact error I get.
So the assignment is basically a password creator for a suitcase. The password will be something like AA0 or DZ1.

This is the complete code of the Kofferslot.java file:
Code
package kofferslot;

public class Kofferslot {
    
    private Letter[] letterlijst;
    private Cijfer cijfer;
    
    public Kofferslot() {
        
        letterlijst[0] = new Letter();
        letterlijst[1] = new Letter();
        cijfer = new Cijfer();
        
    }
    
    public Kofferslot(char firstLetter, char secondLetter, int cijfer) {
        
        letterlijst[0].setLetter(firstLetter);
        letterlijst[1].setLetter(secondLetter);
        this.cijfer.setCijfer(cijfer);
                
    }
    
    public void volgende() {
        if(cijfer.getCijfer() != 9) {
            cijfer.volgende();
        } else if(cijfer.getCijfer() == 9) {
            cijfer.volgende();
            letterlijst[0].volgende();
            letterlijst[1].volgende();
        }
    }
    
}

And the main file, where I create the object:

Code
package kofferslot;

public class Applicatie {

    public static void main(String[] args) {
        
        Kofferslot A = new Kofferslot('A', 'A', 0);
        Kofferslot B = new Kofferslot('B', 'R', 9);
        Kofferslot C = new Kofferslot('D', 'Z', 9);
        Kofferslot D = new Kofferslot('Z', 'Z', 9);
        
        A.volgende();
        B.volgende();
        C.volgende();
        D.volgende();
        
    }
    
}

I've tryed to initialise the array before the constructor, with;

Code
package kofferslot;

public class Kofferslot {
    
    private Letter[] letterlijst = new Letter[2];
    private Cijfer cijfer;

And I tryed this:

Code
public class Kofferslot {
    
    private Letter[] letterlijst;
    private Cijfer cijfer;
    
    public Kofferslot() {
        
        letterlijst = new Letter[2];
        letterlijst[0] = new Letter();
        letterlijst[1] = new Letter();
        cijfer = new Cijfer();
        
    }

But both solutions I tryed won't work. I hope someone can help me out in here.
Where is 'Letter' defined? Shouldn't you be using 'char[]' instead of 'Letter[]'? Unless 'Letter' is some wrapper you've made for a char?

Try something like this:
Code
private Letter[] letterlijst;
/* blahblah */

public Kofferslot(char firstLetter, char secondLetter, int cijfer) {

    letterlijst = new Letter[] { new Letter(firstLetter), new Letter(secondLetter) };

}
(Jan 10, 2017 07:54 AM)Khamul Wrote:  Where is 'Letter' defined? Shouldn't you be using 'char[]' instead of 'Letter[]'? Unless 'Letter' is some wrapper you've made for a char?

Try something like this:
Code
private Letter[] letterlijst;
/* blahblah */

public Kofferslot(char firstLetter, char secondLetter, int cijfer) {

    letterlijst = new Letter[] { new Letter(firstLetter), new Letter(secondLetter) };

}

I will show you the Letter.java file:

Code
package kofferslot;

public class Letter {

    private char letter;
    
    public Letter() {
        letter = 'A';
    }
    
    public char getLetter() {
        return letter;
    }
    
    public void setLetter(char letter) {
        this.letter = letter;
    }
    
    public void volgende() {
        letter++;
    }
    
}
It seems like you are missing a proper constructor for the kofferslot, I might however be misstaken.
You never actually allocate the array before setting anything in it, so you might want to do that

What you have:
Code
public Kofferslot() {
        
        letterlijst[0] = new Letter();
        letterlijst[1] = new Letter();

What you should have:

Code
public Kofferslot() {
        letterlijst = new Letter[2]; // I assume 2, change it if need be
        letterlijst[0] = new Letter();
        letterlijst[1] = new Letter();
}

[Image: 4jbrxO5.png]
Fully scriptable botting/cheating software for games such as Albion Online, Rust, and SMITE.
(Jan 10, 2017 10:47 AM)3cli‌‌pse Wrote:  You never actually allocate the array before setting anything in it, so you might want to do that

What you have:
Code
public Kofferslot() {
        
        letterlijst[0] = new Letter();
        letterlijst[1] = new Letter();

What you should have:

Code
public Kofferslot() {
        letterlijst = new Letter[2]; // I assume 2, change it if need be
        letterlijst[0] = new Letter();
        letterlijst[1] = new Letter();
}

You might want to read the OP
Hey! Looking at these two ^ posts over, I am missing the initation of the array. Put "()" after the [2].
(Jan 10, 2017 11:02 AM)Khamul Wrote:  You might want to read the OP

lmao. That's literally the only thing that could be null on that line, so no matter what he needs to do it.

(Jan 10, 2017 11:05 AM)Maxie Wrote:  Hey! Looking at these two ^ posts over, I am missing the initation of the array. Put "()" after the [2].

No.

[Image: 4jbrxO5.png]
Fully scriptable botting/cheating software for games such as Albion Online, Rust, and SMITE.


Possibly Related Threads...
Thread / Author Replies Views Last Post
[Java] by Aus10Feb 11, 2018 11:14 PM 2 161 Feb 11, 2018 11:14 PM
Last Post: Aus10
[Java] by SunnyAkumaJul 5, 2015 05:15 PM 6 240 Jul 5, 2015 05:15 PM
Last Post: JavaProfit
[Java] by YellowMilkAug 30, 2014 02:23 AM 2 149 Aug 30, 2014 02:23 AM
Last Post: Cosa Nostra