Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.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异常;_Java - Fatal编程技术网

“请帮帮我”;线程主java.lang.nullpointerexception中的java异常;

“请帮帮我”;线程主java.lang.nullpointerexception中的java异常;,java,Java,我想为我的项目寻求帮助。我是一名新手程序员,在线程主java.lang.nullpointerexception中没有出现此错误 这是我的代码: public class Slumbook{ public String codeName; public Slumbook(){ // } public Slumbook(String codeName){ this.codeName = codeName; }

我想为我的项目寻求帮助。我是一名新手程序员,在线程主java.lang.nullpointerexception中没有出现此错误

这是我的代码:

 public class Slumbook{

    public String codeName;

    public Slumbook(){
        //
    }

    public Slumbook(String codeName){
        this.codeName = codeName;
    }

    public String getCodeName(){return codeName;}

    public void setCodeName(String codeName){this.codeName = codeName;}
   }
驱动程序
代码为:-

import java.util.*;

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

        Scanner sc = new Scanner(System.in);
        Slumbook[] slum = new Slumbook[20];

        for(int n=0; n<10; n++){
            slum[n].setCodeName(sc.nextLine());
        }
    }
}
import java.util.*;
公共课{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
贫民窟书[]贫民窟=新贫民窟书[20];

对于(int n=0;n您分配了数组…但未能分配数组中包含的任何对象

建议:

import java.util.*;

public class SlumbookD { 

    public static void main(String[] args){
      Scanner sc = new Scanner(System.in);
      Slumbook[] slum = new Slumbook[20];
      for(int n=0; n<slum.length; n++){
          slum[n] = new Slumbook(sc.nextLine);
      }
    }

}
import java.util.*;
公共类贫民窟{
公共静态void main(字符串[]args){
扫描仪sc=新的扫描仪(System.in);
贫民窟书[]贫民窟=新贫民窟书[20];

对于(int n=0;n您已经创建了空白数组,但没有初始化它,您必须在数组索引处关联对象引用,然后可以在该索引上调用任意数量的setter方法

Slumbook[]贫民窟=newslumbook[20];

对于(int n=0;n您需要在使用数组元素之前初始化它们

Slumbook[] slum = new Slumbook[20];

for(int n=0; n<10; n++){
    slum[n] = new Slumbook();
    slum[n].setCodeName(sc.nextLine());
}
Slumbook[]贫民窟=newslumbook[20];

对于(int n=0;您创建了一个数组,但从不初始化每个数组插槽。您应该了解什么是
NullPointerException
,因为这个问题一直被问到。当您进入循环时,
slum[n]
尚未实例化;也就是说,它是一个空引用/指针。要修复,请在尝试设置其代码名之前实例化
slum
中的每个元素。缓慢键入…打字太多。@ambigram\u maker:因为OP将他的“驱动程序类”命名为SlumbookD。是的,我明白了…但这不是
getCodeNae()
;-)的借口@Remarc Balisi-我的荣幸。很高兴它有帮助!我认为有两个for循环的开销更大,您能解释一下将来会出现哪一个异常吗?
 Slumbook[] slum = new Slumbook[20];

    for(int n=0; n<10; n++){
        slum[n] = new Slumbook(); //  Instantiate Slumbook class and assign reference
        slum[n].setCodeName(sc.nextLine());
    }
Slumbook[] slum = new Slumbook[20];

for(int n=0; n<10; n++){
    slum[n] = new Slumbook();
    slum[n].setCodeName(sc.nextLine());
}
Slumbook[] slum = new Slumbook[20];

for(int i = 0 ; i < slum.length ; i++)  //initializing all the elements
    slum[i] = new Slumbook();

for(int n=0; n<10; n++){
    slum[n].setCodeName(sc.nextLine());
}