2016-08-29 3 views
-2

Ich habe zwei Klassenjava.lang.NullPointerException Main.java:6

Ich bin nicht sicher, warum dies erroring. In der Finsternis gibt es keine roten Unterstreichungen.

Main:

package com.example; 

public class Main { 
    public static void main(String[] args) { 
     Week myWeek = new Week(Week.days.FRIDAY); 
     System.out.println(myWeek.Today.toString()); 
    } 
} 

Woche:

package com.example; 

public class Week { 
    public static enum days { 
     SUNDAY, 
     MONDAY, 
     TUESDAY, 
     WEDNESDAY, 
     THURSDAY, 
     FRIDAY, 
     SATURDAY 
    } 

    static final days[] order = { 
     days.SUNDAY, days.MONDAY, days.TUESDAY, days.WEDNESDAY, 
     days.THURSDAY, days.FRIDAY, days.SATURDAY 
    }; 
    days Today; 

    Week(days toSetTo){ 
     @SuppressWarnings("unused") 
     days Today = toSetTo; 
    } 
} 

der Fehler auf Main.java:6

+0

Wo ist die Variable im Konstruktor gespeichert? – n247s

+2

Jetzt ist es an der Zeit, Java-Code-Konventionen zu verwenden. Sie machen die Kommunikation viel einfacher. Großbuchstaben Klassen (einschließlich Enums), Konstanten in 'ALL_CAPS', Variablen in' CamelCase'. – chrylis

+0

Sie deklarieren zwei Variablen für 'Today', eine Variable ist lokal für den Konstruktor und die andere ist die Instanzvariable. Sie sollten 'this.varName' immer verwenden, um auf eine Instanzvariable zu verweisen. – 4castle

Antwort

1

Die folgenden wird zur Laufzeit Fehler:

myWeek.Today.toString()

, weil myWeek.Today null ist.

In Ihrem Konstruktor statt:

days Today = toSetTo;

Sie müssen dies tun:

Today = toSetTo;

0

Sie sollten die unused richtig es statt zu unterdrücken Warnung behoben haben. Entfernen Sie das Wort days in dieser Zeile. Und schauen Sie sich die Farben der Variablen in Eclipse genau an. Sie sagen dir, welche Namen zueinander gehören.

Verwandte Themen