Hoe kan ik Exception in thread “main” oplossen java.lang.NullPointerException-fout [duplicaat]

Ik heb een probleem met een Java-programma. Uitzondering in thread “main”

java.lang.NullPointerException
at twoten.TwoTenB.<init>(TwoTenB.java:29)
at javapractice.JavaPractice.main(JavaPractice.java:32)
Java Result: 1 

is de foutmelding die ik krijg. Ik kan wel wat hulp gebruiken, aangezien ik hier uren vast zit…

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

Antwoord 1, autoriteit 100%

Dit is het probleem

double a[] = null;

Aangezien a null is, zal NullPointerException elke keer dat u het gebruikt, optreden totdat u het initialiseert. Dus dit:

a[i] = var;

zal mislukken.

Een mogelijke oplossing zou zijn om het te initialiseren bij het declareren:

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

IMO belangrijker dan het oplossen van deze uitzondering, is het feit dat u de stacktrace moet leren lezen en begrijpen wat er staat, zodat u de problemen kunt detecteren en oplossen het.

java.lang.NullPointerException

Deze uitzondering betekent dat er een variabele met de waarde null wordt gebruikt. Hoe op te lossen? Zorg ervoor dat de variabele niet null is voordat u deze gebruikt.

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

Deze regel bestaat uit twee delen:

  • Toon eerst de klasse en methode waar de fout is opgetreden. In dit geval was het bij <init> methode in klasse TwoTenB gedeclareerd in pakket twoten. Als u een foutmelding tegenkomt met SomeClassName.<init>, betekent dit dat de fout is opgetreden tijdens het maken van een nieuwe instantie van de klasse, b.v. uitvoeren van de constructor (in dit geval lijkt dat het probleem te zijn).
  • Ten tweede toont het de locatie van het bestand en het regelnummer waar de fout wordt gegenereerd, die tussen haakjes staat. Op deze manier is het gemakkelijker om te zien waar de fout is ontstaan. Je moet dus kijken in bestand TwoTenB.java, regelnummer 29. Dit lijkt a[i] = var; te zijn.

Vanaf deze regel zullen andere regels vergelijkbaar zijn om u te vertellen waar de fout is opgetreden. Dus als je dit leest:

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

Het betekent dat u een TwoTenB objectreferentie probeerde te instantiëren binnen de main methode van uw klasse JavaPractice gedeclareerd in javapractice pakket.

LEAVE A REPLY

Please enter your comment!
Please enter your name here

nineteen − five =

Other episodes