Ich habe ein Problem bei einem Java-Programm. Exception im Thread "main"
java.lang.NullPointerException
at twoten.TwoTenB.<init>(TwoTenB.java:29)
at javapractice.JavaPractice.main(JavaPractice.java:32)
Java Result: 1
ist der Fehler, den ich bekomme. Ich könnte wirklich Hilfe gebrauchen, da ich Stunden an dieser Stelle feststecke...
package twoten;
import java.util.Scanner;
public class TwoTenB {
public TwoTenB() {
double percentage;
double a[] = null;
double total = 0;
double var;
System.out.print("\tRESULT\n\n");
Scanner scan = new Scanner(System.in);
//double[] mark = new double[7];
for (int i = 0; i < 7; i++) {
System.out.print("\nMarks in subject " + (i + 1) + "\t:\t");
var = scan.nextDouble();
a[i] = var;
total = total + a[i];
//percentage = first * second * third * fourth * fifth * sixth * seventh * 100 / 700;
}
percentage = total * 100 / 700;
if (a[0] > 35 && a[1] > 35 && a[2] > 35 && a[3] > 35 && a[4] > 35 && a[5] > 35 && a[6] > 35 && percentage > 35) {
if (percentage >= 60) {
System.out.print("\nCongratulation!!! you've got FIRST dividion\n");
} else if (percentage >= 45 && percentage < 60) {
System.out.print("\nCongratulation!!! you've got SECOND dividion\n");
} else if (percentage >= 35 && percentage < 45) {
System.out.print("\nCongratulation!!! you've got THIRD dividion\n");
}
} else {
System.out.print("\nSORRY!!! you've FAILED\n");
}
}
}
Das ist das Problem
double a[] = null;
Da a
null
ist, wird NullPointerException
jedes Mal auftreten, wenn Sie es verwenden, bis Sie es initialisieren. Also dies:
a[i] = var;
wird fehlschlagen.
Eine mögliche Lösung wäre, sie bei der Deklaration zu initialisieren:
double a[] = new double[PUT_A_LENGTH_HERE]; //seems like this constant should be 7
IMO wichtiger als die Lösung dieser Ausnahme ist die Tatsache, dass Sie lernen sollten, den Stacktrace zu lesen und zu verstehen, was er aussagt, damit Sie die Probleme erkennen und lösen können.
java.lang.NullPointerException
Diese Ausnahme bedeutet, dass eine Variable mit dem Wert Null
verwendet wird. Wie kann man das Problem lösen? Stellen Sie einfach sicher, dass die Variable vor der Verwendung nicht "null" ist.
at twoten.TwoTenB.
(TwoTenB.java:29)
Diese Zeile hat zwei Teile:
<init>
Methode in der Klasse TwoTenB
, die im Paket twoten
deklariert ist. Wenn Sie eine Fehlermeldung mit SomeClassName.<init>
erhalten, bedeutet dies, dass der Fehler beim Erstellen einer neuen Instanz der Klasse ausgelöst wurde, z.B. beim Ausführen des Konstruktors (in diesem Fall scheint das das Problem zu sein).a[i] = var;
zu sein.Ab dieser Zeile werden andere Zeilen ähnlich sein, um Ihnen zu sagen, wo der Fehler aufgetreten ist. Wenn Sie dies also lesen:
at javapractice.JavaPractice.main(JavaPractice.java:32)
Das bedeutet, dass Sie versucht haben, eine Objektreferenz TwoTenB
innerhalb der main
-Methode Ihrer Klasse JavaPractice
, die im Paket javapractice
deklariert ist, zu instanziieren.