Comment puis-je résoudre l'erreur Exception in thread "main&quot ; java.lang.NullPointerException ?

Je rencontre un problème dans un programme Java. Exception dans le thread "main&quot ;

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");
    }
    }
}
Solution

C'est le problème

double a[] = null;

Puisque a est null, une NullPointerException se produira chaque fois que vous l'utiliserez jusqu'à ce que vous l'initialisiez. Donc ceci :

a[i] = var;

échouera.

Une solution possible serait de l'initialiser lors de sa déclaration :

double a[] = new double[PUT_A_LENGTH_HERE]; //seems like this constant should be 7

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.

java.lang.NullPointerException

Cette exception signifie qu&#8217une 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.

at twoten.TwoTenB.(TwoTenB.java:29)

Cette ligne a deux parties :

  • La première indique la classe et la méthode où l'erreur est survenue. Dans ce cas, il s'agit de la méthode `de la classeTwoTenBdéclarée dans le paquettwoten. Lorsque vous rencontrez un message d'erreur avecSomeClassName.`, 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).
  • Deuxièmement, indique le fichier et le numéro de ligne où l'erreur est survenue, entre parenthèses. De cette façon, il est plus facile de repérer l'endroit où l'erreur s'est produite. Vous devez donc regarder dans le fichier TwoTenB.java, à la ligne 29. Il semble que ce soit 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 :

at javapractice.JavaPractice.main(JavaPractice.java:32)

Cela signifie que vous avez essayé d'instancier une référence d'objet TwoTenB dans la méthode main de votre classe JavaPractice déclarée dans le paquet javapractice.

Commentaires (0)