nullpointexception

外语
少中老师 2019-07-17 16:57:30

当应用程序试图在需要对象的地方使用 null 时,抛出该异常。这种情况包括:
调用 null 对象的实例方法。
访问或修改 null 对象的字段。
将 null 作为一个数组,获得其长度。
将 null 作为一个数组,访问或修改其时间片。
将 null 作为 Throwable 值抛出。

应用程序应该抛出该类的实例,指示其他对 null 对象的非法使用。

#nullpointexception#

返回顶部

影响力:6157

NullpointException异常

描述: NullpointException异常... NullpointException异常
这个解答帮助过4439人

你这个是运行时异常,所以编译当然没问题。
看了一下,你直接返回 return multipliers[x][y];,我想问的是,你对multipliers[][]数组初始化了吗?我看了你的代码,我没有发现你有初始化multipliters[][]的地方啊,如果你不初始化multipliters,调用时如果用到multipliters,就会抛出空引用异常。从里的异常信息里可以知道你在main函数里用到了getMultiplier()函数,而multipliters没有初始化,所以会抛出异常。我是这么猜的哦,因为看不了你全部代码,不知道你有没有初始化。还有,你这里title[][]数组也没有出始化,但异常信息没有显示,只有两种可能,一是你在main函数里没有使用到title[][],二是你用到title[][]的语句调用在getMultiplier()之后,因为在还没有执行到调用title[][]的语句之前就已经抛出异常,所以程序没有执行到title[][],也就没有抛出title[][]的空引用异常。我猜是第二种,不调用title[][]你写来干嘛 ,呵呵。
只是我的一面之词,希望对你有帮助!
你初始化要指定每个维数的大小啊,你应该这样写:
Multiplier[][] multiplier = new Multiplier[boardSize][boardSize];
Title[][] title=new Title[boardSize][boardSize];

编辑时间 2019-09-25 22:11:58
影响力:4937

java.lang.NullPointerException是什么错误

这个解答帮助过3733人

java.lang.NullPointerException是java常见的异常, 中文常常翻译为 空指针异常.

触发条件: 当一个对象为空(null)时,  试图调用对象的方法, 或者访问或者修改对象的属性时 ,就会抛出空指针异常. 

解决该异常的办法: 

  1. 尽量避免使用为空的对象,

  2. 或者先判断是否为null 然后再使用,

  3. 或者使用try catch 捕获到该异常后处理这个异常. 

参考代码

错误示范

public class Demo {
public static void main(String[] args) {
String str = null;
if(str.equals("ABC")) { //str为空,调用str的equals方法, 就会报错
System.out.println("字符串的内容是ABC");
}else {
System.out.println("字符串的内容不是ABC");
}
}
}

解决示范1

public class Demo {
public static void main(String[] args) {
String str = null;
if("ABC".equals(str)) { //使用"ABC"这个不为null的对象,调用他的equals方法
System.out.println("字符串的内容是ABC");
}else {
System.out.println("字符串的内容不是ABC");
}
}
}

示范2: 先判断是否为空, 不为空, 才调用方法和访问属性

public class Demo {
static String str1;
public static void main(String[] args) {
if(str1!=null) {//先判断它不为空,才调用 它的length方法
System.out.println(str1.length());
}else {
System.out.println("str1对象为空");
}
}
}

示范3

import java.util.Scanner;

public class Demo {
static String str1;
public static void main(String[] args) {
try {
System.out.println(str1.length());
}catch(NullPointerException e) {
System.out.println("str1为空...请赋值..");
Scanner sc  = new Scanner(System.in);
str1 = sc.nextLine();
System.out.println("str1的长度为:"+str1.length());
}
}
}

//str1为空...请赋值..
//ABC
//str1的长度为:3

编辑时间 2018-10-06
影响力:3450

为什么会报NullPointerException

这个解答帮助过767人
编辑时间
影响力:3802

java.lang.NullPointerException怎么解决

这个解答帮助过6709人

根据报错提示,(root cause下信息)可以发现是createStatement();这个函数返回值为空。初步判定为传入参数conn是一个错误的,监测一下conn是否成功创建并打开。

追问

追答

 public static void Init()
{
try {
//   Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
//      conn = DriverManager.getConnection("jdbc:sqlserver://localhost:1433; DatabaseName=MessageBoard", "sa", "123456");//这是sqlserver  可以不看
//下面是mysql
  Class.forName("com.mysql.jdbc.Driver"); //第二步,获得数据库的地址,用户名,密码
  String url="jdbc:mysql://localhost:3306/messageboard?characterEncoding=utf8&useSSL=true";
  String user="root";
  String password="123456";
  //第三步,获得地址,用户名,密码后,给我一个与该数据库的连接
  conn= DriverManager.getConnection(url,user,password);
  //第四步,获得连接实例connection的目的是对数据库进行操作,这就要用到Statement
                System.out.println("success!");
statement = conn.createStatement();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

你可以参考一下,我看你的msql端口号不是3306,是不是改了?建议输出一些信息,进行判断,看看是不是达到了自己的需求。

追问

这些我都测试

过了,连接都是对的。

追答

mysql的jar包是不是对的?有时候这个问题也会导致问题。你在创建得过程每一个关键代码后面输出写信息,在控制台查看输出信息,看输出到哪一步,看从哪开始出错的。同时把异常信息给打印出来。

更多追问

编辑时间 2018-12-10
影响力:1135

出现java.lang.NullPointerException异常怎么解决

这个解答帮助过8997人

  • java.lang.NullPointerException异常

  • 报空指针,找不到  lang 包你定义的对象

  • 看错误的行数, 应该是没接收到参数

编辑时间 2018-11-07
影响力:8368

代码错误:500 java.lang.NullPointerException

描述: 我也不知道哪里出了问题,老是说我是空指针错误,调试的话会出现没有源代码的页面.希望大佬给与解决.....谢谢了... 我也不知道哪里出了问题,老是说我是空指针错误,调试的话会出现没有源代码的页面.希望大佬给与解决.....谢谢了

这个解答帮助过871人

代码出错在19行,空指针错误
可以检查一下是不是哪个对象是空的

追问

看了一下是空的。但是问题不知道出在哪里

但是不知道为什么不对

追答

这个,这点代码我也看不出问题,会不会是您没有查出来结果,但是您是这样写的

Employee e = new Employee();
e = XX  //(查询方法)
return e;

这样返回的对象应该属性都是空的

追问

我找到了。原来是操作数据库的时候出了问题

谢谢了

更多追问

编辑时间 2019-04-05
影响力:8157

如何查找java.lang.NullPointerException的原因

这个解答帮助过4045人

可能的原因:
实例化的类的对象没有使用new在new对象之前就使用对象

变量值没有申明就调用

查找方法:看控制台报错的行数!!!!有显示是第几行的问题。

class A
{
    int i;
}

以下情况会发生空指针异常
------------
class B
{
    public static void main (String[] args)
    {
        A hello;
        hello.i = 0;//空指针!
    }
}
----------
class B
{
    public static void main (String[] args)
    {
        hello.i = 0;//空指针!
        A hello = new A ();
    }
}

------------
class B
{
    public static void main (String[] args)
    {
        A hello [] = new A[5];//定义类数组
        hello.i = 0;//空指针!
    }
}

正确的调用方法
class B
{
    public static void main (String[] args)
    {
        A hello = new A ();
        hello.i = 0;//正确!
    }
}
-----------
class B
{
    public static void main (String[] args)
    {
        A hello []= new A [5];//注意这里其实并没有构造5个新对象,而是构造了5个对象指针。
        for(int a = 0; a < 5; a++)
        {
             hello[a] = new A();//直到构造函数被调用,对象才算被实例化。
        }
        hello.i = 0;//正确!
    }
}

编辑时间 2018-09-26
影响力:3462

关于Java中的java.lang.NullPointerException问题。

描述: packagestudent_system_new;publicclassStudent{publicStudent(){this.studentID=0;this.Name="";Math=0.0;Chinese=0.0;English=0.0;}publicStudent(intstudentID,Stringname,doublem... package student_system_new;public class Student { public Student() { this.studentID = 0; this.Name = ""; Math = 0.0; Chinese = 0.0; English = 0.0; } public Student(int studentID, String name, double math, double chinese, double english) { this.studentID = studentID; this.Name = name; Math = math; Chinese = chinese; English = english; } private int studentID; private String Name; private double Math; private double Chinese; private double English; public void setName(String name) { Name = name; } public void setStudentID(int ID) { studentID = ID; } public void setMath(double math) { Math = math; } public void setChinese(double chinese) { Chinese = chinese; } public void setEnglish(double english) { English = english; }}package student_system_new;import java.util.*;public class Classes { public Classes() { super(); } final static int SIZE = 5; private Student[] class1 = new Student[SIZE]; public void setData() { System.out.println("输入学生数据:学号、姓名、数学、语文、英语"); Scanner data = new Scanner(System.in); for(Student a: class1) { a.setStudentID(data.nextInt()); a.setName(data.next()); a.setMath(data.nextDouble()); a.setChinese(data.nextDouble()); a.setEnglish(data.nextDouble()); } data.close(); }}package student_system_new;public class Texter { public static void main(String[] args) { // TODO Auto-generated method stub Classes first = new Classes(); first.setData(); }}有三个类。我测试setData目的是想输入五个学生数据,可是输入的时候出现了如下图这样的错误,好像是使用了一个空指针,是不是数组这里有问题?该怎么改呢?

展开

这个解答帮助过21人

private Student[] class1 = new Student[SIZE];

创建了数组。。。。。。。。。。。
for(Student a: class1) {
a.setStudentID(data.nextInt());

而数组中的各个元素是Student类、并未初始化。。。。。。
for(Student a: class1) {
a=new Student();
a.setStudentID(data.nextInt());

编辑时间 2018-11-05
影响力:2863

java.lang.NullPointerException是什么错误

这个解答帮助过6780人
编辑时间 2018-10-18
影响力:4147

java.lang.NullPointerException是什么错误

这个解答帮助过283人
编辑时间 2018-09-26