Détails
Comment puis-je résoudre l'erreur Exception in thread "main" ; java.lang.NullPointerException ?
Je rencontre un problème dans un programme Java. Exception dans le thread "main" ;
java.lang.NullPointerException
at twoten.TwoTenB.<init>(TwoTenB.java:29)
at javapractice.JavaPractice.main(JavaPractice.java:32)
Java Result: 1
est l'erreur que je reçois. J'aurais vraiment besoin d'aide, car je suis coincé depuis des heures à cet endroit...
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");
}
}
}
4
1
C'est le problème
Puisque
a
estnull
, uneNullPointerException
se produira chaque fois que vous l'utiliserez jusqu'à ce que vous l'initialisiez. Donc ceci :échouera.
Une solution possible serait de l'initialiser lors de sa déclaration :
IMO plus important que la résolution de cette exception, est le fait que vous devriez apprendre à lire le stacktrace et comprendre ce qu'il dit, afin de pouvoir détecter les problèmes et les résoudre.
Cette exception signifie qu’une variable dont la valeur est nulle est utilisée. Comment résoudre ce problème ? Assurez-vous simplement que la variable n'est pas
nulle
avant d'être utilisée.Cette ligne a deux parties :
de la classe
TwoTenBdéclarée dans le paquet
twoten. Lorsque vous rencontrez un message d'erreur avec
SomeClassName.`, cela signifie que l'erreur est survenue lors de la création d'une nouvelle instance de la classe, par exemple en exécutant le constructeur (dans ce cas, cela semble être le problème).a[i] = var;
.À partir de cette ligne, d'autres lignes seront similaires pour vous dire où l'erreur s'est produite. Donc en lisant ceci :
Cela signifie que vous avez essayé d'instancier une référence d'objet
TwoTenB
dans la méthodemain
de votre classeJavaPractice
déclarée dans le paquetjavapractice
.