Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
“线程中的异常”;“主要”;java.lang.NullPointerException_Java - Fatal编程技术网

“线程中的异常”;“主要”;java.lang.NullPointerException

“线程中的异常”;“主要”;java.lang.NullPointerException,java,Java,我创建了一个函数,在这个函数中,我通过数组沿着它的索引发送数据,这样特定的值应该转换成二进制,但我不知道我是否正确地发送和返回数组 我的代码: package GA; public class test { public void chr_intval(){ double [] array = new double[100] ; int i=1; array[i] = 4; System.ou

我创建了一个函数,在这个函数中,我通过数组沿着它的索引发送数据,这样特定的值应该转换成二进制,但我不知道我是否正确地发送和返回数组

我的代码:

 package GA;

public class test {

    public void chr_intval(){

        double [] array = new double[100] ;
            int i=1;
            array[i] = 4;
            System.out.println(Genes(array,i)); // print the value contain array[1] in binary

        }




    @SuppressWarnings("null")
    public double[] Genes(double[] j,int i){ // get the value from 1st index that is 4 hardcoded
        double [] a1=null;
        int k=9;
        //a1[k]=0;
        double d=j[i];
        while(d>1)
        {
            a1[k--]=d%2;
            d=d/2;

        }



        return a1;// return the value in binary that is 100

    }
    public static void main(String[] args) {
        test a = new test();
        a.chr_intval();
    }

}
控制台:

Exception in thread "main" java.lang.NullPointerException
    at java.io.Writer.write(Unknown Source)
    at java.io.PrintStream.write(Unknown Source)
    at java.io.PrintStream.print(Unknown Source)
    at java.io.PrintStream.println(Unknown Source)
    at GA.test.chr_intval(test.java:10)
    at GA.test.main(test.java:41)
这里有一个问题:

@抑制警告(“空”)

还有,你的

私有字符[]基因(双[]数组,int i){ //TODO自动生成的方法存根 返回null; }


正在返回null值。

Genes1()从未执行,您正在从Gene()方法返回null。

发生这种情况是因为Genes方法返回null。println()函数不知道如何处理null值,因此抛出NullPointerException


只需编辑您的函数以返回除null以外的内容。

您的项目是否有一个主方法正在调用这些方法中的任何一个?
@SuppressWarnings(“null”)
DANGER DANGERi通过调用Genes的位置调用chr_intval()。发布的代码毫无意义。NPE易于诊断。打开test.java文件,转到第41行,查看您取消引用的对象。其中一个是空的。一旦你知道是哪一个,找出你为什么没有使用构造函数初始化它或者误解了它的作用域。我应该写char[]而不是double[]Genes(---)?这取决于你的方法返回什么你试图
System.out.println
调用Genes返回的空值。。。在Genes方法中,它需要返回System.out.println可以处理的某种类型的char[],但不要与null异常混淆。有时,您需要在try-catch语句中捕捉它们。然而,好的编程技术应该消除对这些的需求。(但不是一直如此!:P)要补充@Josef E.所说的,当异常发生在chr_intval()方法中时,它会传播回main方法,这就是堆栈跟踪显示的内容。在main方法中,没有异常处理(try…catch块)来抑制异常并记录错误,或者以其他方式处理它。当你有更大的项目时,尽早学习良好的异常处理将对你将来有所帮助;但不知道???我想你把Genes()和Genes1()搞混了。正如我在解释中所说的,我正在将十进制转换为二进制,我的逻辑被发送到gene(…)。我编辑了代码,我真的无法理解你的代码。为什么
k=9
?您也正在使用dim 100创建
数组
,但在将其传递给
基因之前,请不要填充它。