“线程中的异常”;“主要”;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创建数组
,但在将其传递给基因之前,请不要填充它。