当前位置:  开发笔记 > 编程语言 > 正文

为什么抛出NullPointerException?

如何解决《为什么抛出NullPointerException?》经验,为你挑选了1个好方法。

我有以下程序扫描二维矩阵并检查行和列中0的位置,并使整个行和列(行和列中的0存在),矩阵中的0.

public static int[][] makeMatZero(int[][] matrix){
    Boolean[] row = new Boolean[matrix.length];
    Boolean[] col = new Boolean[matrix[0].length];

    for(int i = 0;i< matrix.length;i++){
        for(int j = 0;j< matrix[0].length;j++){
            if(mat[i][j]==0){
                row[i]=true;
                col[j]=true;
            }
        }

    }

    for(int i = 0;i

我在行if(row [i])中得到一个nullPointerException,如果我将它注释掉,我在if(col [i])中得到一个异常.我尝试调试并打印出i和row.length/col.length的值.i的值永远不会越过row.length/col.length,但我仍然得到nullPointerException.任何帮助让我知道错误是多么值得赞赏.

PS:我试图在Gayle Laakmann McDowell的"Cracking the coding Interview"一书中解决几个问题,上面提到的是章节数组和字符串中的一个问题.书中也给出了上述解决方案



1> Florian Albr..:

使用"小" boolean而不是Boolean类作为数组的类型,因此所有字段都将被初始化false而不是null(后者导致您的NullPointerException).

附加说明:Boolean是一个类,因此编译器对这样的行执行所谓的自动装箱:

Boolean b = null;
if (b) 

Boolean b = null;
if (b.booleanValue())

这是显而易见的呼吁.booleanValue()null是不是一个好主意.

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有