【问题标题】:Java: nullpointer exceptionJava:空指针异常
【发布时间】:2014-04-17 03:08:06
【问题描述】:

在我的代码中,我试图接受参数并将其放入名为cl 的对象数组中。它给了我NullPointerException

//In my main class
public static void main(String args[]) {
    int n = Integer.parseInt(args[0]);
    cl[] Array1;  
    Array1 = new cl[n];
    cl[0].a1 = Integer.parseInt(args[1]);
    cl[0].a2 = Integer.parseInt(args[2]);
}

//another class declaration
public class cl {
    int a1;
    int a2;
}

我收到了NullPointerException,我可以打印命令行参数。我不确定是什么问题。

【问题讨论】:

  • 什么是arr[] Array1;?你的代码没有给出 compile time 错误吗?
  • cl[0].a1 应该是 Array1[0].a1。对于其他字段访问也是如此。
  • 请,开始使用正确的命名约定。类以大写字母开头,变量以小写字母开头。

标签: java nullpointerexception


【解决方案1】:
 cl[]  Array1 = new cl[n];

但您的对象为空,因为您尚未初始化 cl[] 的对象

例如。

Array1[0]= new cl();

然后访问变量。

Array1[0].a1Array1[0].a2

当你这样做时

cl[0].a1 = Integer.parseInt(args[1]);

cl  is not your array variable your variable is `Array1`

【讨论】:

    【解决方案2】:

    初始化一个数组不会初始化它的元素。

    这个

     Array1 = new cl[n];
    

    使用n 元素创建一个cl 类型的数组,但这些都被初始化为null,因为cl 是一个引用类型。

    你需要先初始化元素,然后才能访问它的字段

    Array1[0] = new cl();
    Array1[0].a1 = ...
    

    尽量遵循 Java 命名约定。始终以小写字符开头的变量名。始终以大写字符开头的类名。

    【讨论】:

    • 我想你的意思是Array1[0] = new c1();Array1[0].a1 = ...
    • @Jason 是的,从 OP 的 sn-p 复制粘贴错误。谢谢。
    • 我遇到了同样的问题
    【解决方案3】:

    在以下几行中:

    c1[] Array1;  
    Array1 = new cl[n];
    

    您正在创建一个数组来存储对c1 的引用。

    然后,当您真正的意思是 Array1[0] 时,您开始取消引用 c1[0],但您从未创建 c1 的实例并将其放入 Array1[0]

    你需要做的是:

    public static void main(String args[]) 
    {
        int n = Integer.parseInt(args[0]);
    
        cl[] Array1;  
    
        Array1 = new cl[n];
    
        // don't forget to create an instance of c1 and put in array at index 0!
        Array1[0] = new c1();
    
        Array1[0].a1 = Integer.parseInt(args[1]);
        Array1[0].a2 = Integer.parseInt(args[2]);
    }
    

    【讨论】:

    • Jason 我想一定是Array1[0] = new c1();
    猜你喜欢
    • 2011-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-28
    相关资源
    最近更新 更多