Bir Java programında sorun yaşıyorum. main" iş parçacığında istisna;
java.lang.NullPointerException
at twoten.TwoTenB.<init>(TwoTenB.java:29)
at javapractice.JavaPractice.main(JavaPractice.java:32)
Java Result: 1
aldığım hata. Saatlerdir bu noktada sıkışıp kaldığım için gerçekten yardıma ihtiyacım var...
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");
}
}
}
İşte sorun bu
double a[] = null;
a`null
olduğu için, onu ilklendirene kadar her kullandığınızda NullPointerException
ortaya çıkacaktır. Yani bu:
a[i] = var;
başarısız olacak.
Olası bir çözüm, bunu bildirirken başlatmak olabilir:
double a[] = new double[PUT_A_LENGTH_HERE]; //seems like this constant should be 7
IMO'ya göre bu istisnayı çözmekten daha önemli olan şey, yığın izini okumayı ve ne dediğini anlamayı öğrenmeniz gerektiğidir, böylece sorunları tespit edebilir ve çözebilirsiniz.
java.lang.NullPointerException
Bu istisna, null
değerine sahip bir değişkenin kullanıldığı anlamına gelir. Nasıl çözülür? Kullanılmadan önce değişkenin null
olmadığından emin olun.
twoten.TwoTenB.
(TwoTenB.java:29) adresinde
Bu hat iki bölümden oluşmaktadır:
twoten
paketinde bildirilen TwoTenB
sınıfındaki <init>
metodunda olmuştur. SomeClassName.a[i] = var;
gibi görünüyor.Bu satırdan itibaren, diğer satırlar hatanın nerede ortaya çıktığını söylemek için benzer olacaktır. Yani bunu okurken:
javapractice.JavaPractice.main(JavaPractice.java:32) adresinde
Bu, javapractice
paketinde bildirilen JavaPractice
sınıfınızın main
yöntemi içinde bir TwoTenB
nesne referansını örneklemeye çalıştığınız anlamına gelir.