我在Java程序上遇到问题。线程“主”中的异常
java.lang.NullPointerException at twoten.TwoTenB.<init>(TwoTenB.java:29) at javapractice.JavaPractice.main(JavaPractice.java:32) Java Result: 1
是我得到的错误。我真的可以使用一些帮助,因为我在这个地方呆了几个小时…
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"); } } }
这就是问题
double a[] = null;
因为a是null,所以NullPointerException每次使用它都会出现,直到您对其进行初始化。所以这:
a
null
NullPointerException
a[i] = var;
将失败。
可能的解决方案是在声明时将其初始化:
double a[] = new double[PUT_A_LENGTH_HERE]; //seems like this constant should be 7
IMO比解决此异常更为重要的事实是,您应该学会 阅读 stacktrace并 理解其 含义,以便可以发现问题并加以解决。
java.lang.NullPointerException
此异常表示存在一个使用了null值的变量。怎么解决?只需确保变量没有null被使用即可。
在twoten.TwoTenB。(TwoTenB.java:29)
该行包括两个部分:
<init>
TwoTenB``twoten``SomeClassName.<init>
从这一行,其他行将类似,以告诉您错误发生在哪里。因此,在阅读本文时:
在javapractice.JavaPractice.main(JavaPractice.java:32)
这意味着您正在尝试在包中声明的类TwoTenB的main方法内部实例化对象引用。JavaPractice``javapractice
TwoTenB
main
JavaPractice``javapractice