Heya, still rather new to programming, I'm having trouble understanding NullPointerException. The code below throws NullPointerException at rows 30 and 92. I do not quite understand why (as I understand it row 30 won't be run before the objects are created)? Any help would be appreciated!!
public class Uppg5_OH {
static class Ryggsack {
private Sak[] ryggsackArray = new Sak[30];
private int arrayCounter = 0;
public Ryggsack() {
}
public void stoppaIn(Sak s) {
if (arrayCounter<29) {
ryggsackArray[arrayCounter] = s;
arrayCounter++;
}
else {
System.out.println("Ryggsäcken är full!");
}
}
public int totalVikt() {
int totalaVikten = 0;
for (int i=0; i<ryggsackArray.length; i++) {
totalaVikten += ryggsackArray[i].Vikt();
}
return totalaVikten;
}
public Sak tyngstaSaken() {
Sak tyngsta = null;
int störstaVikt = 0;
for (int j=0; j<ryggsackArray.length; j++) {
int vikten = ryggsackArray[j].Vikt();
if ( j==0 ) {
ryggsackArray[j] = tyngsta;
störstaVikt = vikten;
}
else {
if (störstaVikt < vikten) {
ryggsackArray[j] = tyngsta;
//störstaVikt = vikten;
}
}
}
return tyngsta;
}
public int antalSmaSaker() {
int mgdSmaSaker = 0;
for (int k=0; k<ryggsackArray.length; k++) {
if (ryggsackArray[k].Vikt()<2) {
mgdSmaSaker++;
}
}
return mgdSmaSaker;
}
}
static class Sak {
private String namn;
private int tyngd;
public Sak(String beteckning, int vikt) {
namn = beteckning;
tyngd = vikt;
}
public java.lang.String getBeteckning() {
return this.namn;
}
public int Vikt() {
return this.tyngd;
}
}
public static void main(String[] args) {
// En ny ryggsäck skapas
Ryggsack fjallraven = new Ryggsack();
// Sätter in några saker i ryggsäcken
fjallraven.stoppaIn(new Sak("Bok",3));
fjallraven.stoppaIn(new Sak("Tröja",1));
fjallraven.stoppaIn(new Sak("Jacka",1));
fjallraven.stoppaIn(new Sak("Stövlar",2));
fjallraven.stoppaIn(new Sak("Sovsäck",4));
System.out.println("Total vikt: " + fjallraven.totalVikt());
System.out.println("Tyngsta saken: " + fjallraven.tyngstaSaken().getBeteckning());
System.out.println("Antal småsaker: " + fjallraven.antalSmaSaker());
}
}