如何解决Java中的NullPointerException错误?
我正在用java制作这个非常基本的概要文件创建者,在调试过程中,我不断地出现NullPointerException错误。我不知道如何解决这个问题,如果有人能告诉我如何解决这个问题,我将不胜感激。代码如下:如何解决Java中的NullPointerException错误?,java,nullpointerexception,Java,Nullpointerexception,我正在用java制作这个非常基本的概要文件创建者,在调试过程中,我不断地出现NullPointerException错误。我不知道如何解决这个问题,如果有人能告诉我如何解决这个问题,我将不胜感激。代码如下: import java.util.Scanner; public class Creator { String[] userNames; int[] birthYears; String[] genders; String userCommand;
import java.util.Scanner;
public class Creator
{
String[] userNames;
int[] birthYears;
String[] genders;
String userCommand;
Scanner scanner1 = new Scanner(System.in);
Scanner scanner2 = new Scanner(System.in);
public void create()
{
System.out.println("What is your name?");
userNames[0] = scanner1.nextLine();
System.out.println(userNames[0]);
System.out.println("In what year were you born?");
birthYears[0] = scanner1.nextInt();
System.out.println(birthYears[0]);
System.out.println("What is your gender?");
genders[0] = scanner2.nextLine();
System.out.println(genders[0]);
}
}
在main方法中,我刚刚创建了一个Creator对象,并使用它调用方法create()
。代码永远不会超过“What's your name?”代码块,每次运行它时,我都会出现以下错误:
Exception in thread "main" java.lang.NullPointerException
at Creator.create(Creator.java:19)
错误引用的是此行:
userNames[0] = scanner1.nextLine();
我不知道如何修复此问题,如果有人告诉我如何修复,我将不胜感激。您尚未初始化阵列。您需要创建数组,因为位置0不存在,因此您有一个NullPointerException
String[] userNames = new String[5]; // for example to store 5 usernames
您还需要创建其他数组 之所以发生这种情况,是因为您只是声明了名为用户名、生日和性别的数组,而没有初始化它们。当您试图在不初始化对象的情况下访问对象或其方法时,会发生NullPointerException。务必在Creator类的构造函数中进行所有初始化
import java.util.Scanner;
公共类创建者{
字符串[]用户名;
int[]生日;
字符串[]性别;
字符串userCommand=“”;
扫描仪1;
扫描仪2;
//在默认构造函数内初始化。
公共创建者(){
用户名[]=新字符串[10];
生日[]=新整数[10];
genders[]=新字符串[10]
scanner1=新扫描仪(System.in);
scanner2=新扫描仪(System.in);
}
公共void create(){
System.out.println(“你叫什么名字?”);
用户名[0]=scanner1.nextLine();
System.out.println(用户名[0]);
你是哪一年出生的;
生日[0]=scanner1.nextInt();
System.out.println(生日[0]);
System.out.println(“你的性别是什么?”);
genders[0]=scanner2.nextLine();
System.out.println(性别[0]);
}
}
您需要的是初始化阵列。您可以这样做,考虑到它们所需的大小为1:
String[] userNames = new String[1];
int[] birthYears = new int[1];
String[] genders = new String[1];
现在你可以走了如果不初始化它们,就意味着没有为这些变量分配内存,因此会出现NPE错误。当声明数组时,只创建一个引用变量。与基本类变量不同,数组在创建对象时不会实例化。要实际创建或为数组提供内存,必须创建如下数组:
String[] userNames = new String[5];
否则,在尝试访问数组时,您将在运行时获得
NullPointerException
,因为没有实际的数组对象附加到它。这是否回答了您的问题?您可以通过初始化所有数组来解决问题,比如soString[]userNames=newstring[5]//大小为5
。但是为什么你需要两台扫描仪呢?在我使用第一台扫描仪两次以上之后,它就停止工作了。我只是假设扫描器就是这样的,但也许我使用的IDE工作不正常。谢谢你指出这一点!请检查我的更新版本,这不会无误地通过整个代码!如果我没弄错的话,他会问“我能做些什么来解决Java中的NullPointerException错误?”。TL;博士你必须初始化所有数组。要缩小问题的范围,你是对的。不过,此人说,因为他/她不知道实际的问题。他/她只是在这里描述他/她在裸眼中看到的东西。因此,在那之后,他/她将再次面对这一点!你想要吗?我想没有!不,我明白。我没有初始化数组,所以它给出了错误。答案只是给出了一个示例,说明我需要为所有阵列执行哪些操作。