线程中的java异常";“主要”;尝试证明null时发生java.lang.NullPointerException

线程中的java异常";“主要”;尝试证明null时发生java.lang.NullPointerException,java,null,Java,Null,有人知道为什么在我的代码中,theere总是“线程“main”java.lang.NullPointerException中的异常”错误吗 public class a16 { public static void main(String[] args) { int[] a = {4, 2, 3}; int[] b = {1, 5, 3, 5}; if (sub(mult(a, b), b) == null) { System.out.println(

有人知道为什么在我的代码中,theere总是“线程“main”java.lang.NullPointerException中的异常”错误吗

public class a16 {
public static void main(String[] args) {

    int[] a = {4, 2, 3};
    int[] b = {1, 5, 3, 5};

    if (sub(mult(a, b), b) == null) {
        System.out.println("f");
    } else {
        for (int i = 0; i < a.length; i++) {
            System.out.println(a[i]);
        }
    }


}

public static int[] mult(int[] a, int[] b) {
    if (a.length == b.length) {
        for (int i = 0; i < a.length; i++) {
            a[i] = a[i] * b[i];
        }
        return a;
    } else {
        return null;
    }

}

public static int[] sub(int[] a, int[] b) {
    if (a.length == b.length) {
        for (int i = 0; i < a.length; i++) {
            a[i] = a[i] - b[i];
        }
        return a;
    } else {
        return null;
    }
}
公共级a16{
公共静态void main(字符串[]args){
int[]a={4,2,3};
int[]b={1,5,3,5};
if(sub(mult(a,b),b)=null){
系统输出打印项次(“f”);
}否则{
for(int i=0;i
}

我是java新手,这个练习是我大学课程的一部分,
提前感谢您的回答

由于
a
b
的长度不同,您的
mult(a,b)
将计算为
null
。因此,基本上你调用的是
sub
方法,比如->
sub(null,b)
->这意味着当你在
sub
方法的第一步中尝试执行
a.length
时,它会抛出一个NullPointerException

好的,我想我明白你的意思了,谢谢。你知道如何修复代码,如果a和b的长度不相同(在两种方法中),它将打印“f”并返回null吗?@guellich,在a和b的sub和mult方法的开头添加null检查,就像这样,如果(a==null | | b==null){return null;},我认为你的程序应该运行良好