加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

如何解决线程“main”中的异常java.lang.NullPointerException错

发布时间:2020-12-15 02:06:28 所属栏目:Java 来源:网络整理
导读:参见英文答案 What is a NullPointerException,and how do I fix it?????????????????????????????????????12个 我在Java程序中遇到问题.线程“main”中的异常 java.lang.NullPointerExceptionat twoten.TwoTenB.init(TwoTenB.java:29)at javapractice.JavaP
参见英文答案 > What is a NullPointerException,and how do I fix it?????????????????????????????????????12个
我在Java程序中遇到问题.线程“main”中的异常

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("tRESULTnn");
    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 dividionn");
        } else if (percentage >= 45 && percentage < 60) {
            System.out.print("nCongratulation!!! you've got SECOND dividionn");
        } else if (percentage >= 35 && percentage < 45) {
            System.out.print("nCongratulation!!! you've got THIRD dividionn");
        }
    } else {
        System.out.print("nSORRY!!! you've FAILEDn");
    }
    }
}

解决方法

这就是问题

double a[] = null;

由于a为null,因此每次使用它时都会出现NullPointerException,直到初始化它为止.所以这:

a[i] = var;

将失败.

一个可能的解决方案是在声明它时初始化它:

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

IMO比解决这个例外更重要的是,您应该学会阅读堆栈跟踪并理解它所说的内容,这样您就可以发现问题并解决问题.

java.lang.NullPointerException

此异常表示存在使用null值的变量.怎么解决?在使用之前,请确保变量不为null.

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

这条线有两部分:

>首先,显示抛出错误的类和方法.在这种情况下,它位于< init>在包twoten中声明的类TwoTenB中的方法.当您遇到SomeClassName的错误消息时.< init>表示在创建类的新实例时抛出错误,例如执行构造函数(在这种情况下似乎是问题).
>其次,显示引发错误的文件和行号位置,即括号之间.这种方式更容易发现错误出现的位置.所以你必须查看文件TwoTenB.java,第29行.这似乎是[i] = var;.

从这一行开始,其他行将类似于告诉您错误出现的位置.所以当读这个:

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

这意味着您试图在javapractice包中声明的类JavaPractice的main方法中实例化一个TwoTenB对象引用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读