Saya mengalami masalah pada program Java. Pengecualian di thread "main"
java.lang.NullPointerException
at twoten.TwoTenB.<init>(TwoTenB.java:29)
at javapractice.JavaPractice.main(JavaPractice.java:32)
Java Result: 1
adalah kesalahan yang saya dapatkan. Saya benar-benar dapat menggunakan bantuan, karena saya terjebak berjam-jam di tempat ini ...
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");
}
}
}
Ini adalah masalahnya
double a[] = null;
Karena a
adalah null
, NullPointerException
akan muncul setiap kali anda menggunakannya sampai anda menginisialisasinya. Jadi ini:
a[i] = var;
akan gagal.
Solusi yang mungkin adalah menginisialisasikannya ketika mendeklarasikannya:
double a[] = new double[PUT_A_LENGTH_HERE]; //seems like this constant should be 7
IMO yang lebih penting daripada menyelesaikan pengecualian ini, adalah fakta bahwa Anda harus belajar membaca stacktrace dan memahami apa yang dikatakannya, sehingga Anda dapat mendeteksi masalah dan menyelesaikannya.
java.lang.NullPointerException
Pengecualian ini berarti ada variabel dengan nilai null
yang digunakan. Bagaimana cara mengatasinya? Pastikan variabel tidak null
sebelum digunakan.
at twoten.TwoTenB.
(TwoTenB.java:29)
Baris ini memiliki dua bagian:
&<init>
metode di kelas TwoTenB
yang dideklarasikan dalam paket twoten
. Ketika Anda menemukan pesan error dengan SomeClassName.<init>
, berarti error dilemparkan saat membuat instance baru dari kelas, misalnya mengeksekusi konstruktor (dalam kasus ini yang tampaknya menjadi masalah).a[i] = var;
.Dari baris ini, baris-baris lain akan serupa untuk memberitahu Anda di mana kesalahan itu muncul. Jadi ketika membaca ini:
di javapractice.JavaPractice.main(JavaPractice.java:32)
Ini berarti bahwa Anda mencoba untuk menginstansiasi referensi objek TwoTenB
di dalam metode main
dari kelas JavaPractice
yang dideklarasikan dalam paket javapractice
.