我收到这个错误;“线程中的异常”;“主要”;java.lang.NullPointerException“;甚至认为代码中没有错误

我收到这个错误;“线程中的异常”;“主要”;java.lang.NullPointerException“;甚至认为代码中没有错误,java,Java,我得到了一个错误,即使我没有看到通过审查代码的问题 它说错误在“char[]linechars;”处 我不确定在Employee1类中使用字符数组时为什么会出现此错误 public class Employee1 { public String name; public String number; Scanner keyboard = new Scanner(System.in); char[] lineChars; public Employee

我得到了一个错误,即使我没有看到通过审查代码的问题

它说错误在“char[]linechars;”处

我不确定在
Employee1
类中使用字符数组时为什么会出现此错误

public class Employee1 {
    public String name;
    public String number;

    Scanner keyboard = new Scanner(System.in);

    char[] lineChars;

    public Employee1() {
        this.lineChars = number.toCharArray();
    }

    public void setName() {
        System.out.println("enter name");
        name = keyboard.nextLine();
    }

    public String getName() {
        System.out.println("your name is " + name);
        return name;
    }

    public void setNumber() {
        System.out.println("enter number");
        for (int i = 0; i < lineChars.length; i++) {
            if (i == 0 || i == 1 || 1 == 2 || i > 0 && i <= 9) {
                number = keyboard.nextLine();
            } else {
                System.out.println("must be 1-9");
            }
        }
    }

    public String getNumber() {
        System.out.println("your number: ");
        return number;
    }
}
公共类员工1{
公共字符串名称;
公共字符串号;
扫描仪键盘=新扫描仪(System.in);
char[]lineChars;
公共雇员1(){
this.lineChars=number.toCharArray();
}
public void setName(){
System.out.println(“输入名称”);
name=keyboard.nextLine();
}
公共字符串getName(){
System.out.println(“您的名字是”+name);
返回名称;
}
公共无效集合号(){
System.out.println(“输入编号”);
对于(int i=0;i如果(i==0 | | i==1 | | 1==2 | | i>0&&i欢迎使用StackOverflow。首先,一些有助于将来获得更好响应的提示:

  • 请通过格式化程序/美化程序运行您的代码,以便其他人可以更轻松地阅读您的代码。例如,有一个像样的格式化程序。此代码实际上不可读
  • 在讨论错误时,请提供所看到的完整、准确的错误。JRE报告的正确错误详细信息不仅会让您得到更快的响应和更准确的答案,而且您的问题不太可能因为质量差而被否决
  • 不要粘贴“所有代码”,如果成员需要更多,他们会要求粘贴。相反,只包括JRE报告的错误详细信息中标识的类
  • 现在,问题解释如下:

    当我们创建一个新的对象实例时,执行中的代码

    在您的情况下,当您创建一个新的
    Employee1
    实例时,执行这一行代码:

    this.lineChars = number.toCharArray();
    
    由于
    number
    为空(未分配值),因此会出现异常

    考虑以下几点:

    public Employee1()
    {   
        number = "12345";
        this.lineChars = number.toCharArray();
    }
    
    这只是一个说明代码问题的示例。您可能希望将值传递到构造函数中,而不是硬编码该值:

    public Employee1(String someNumber)
    {   
        number = someNumber;
        this.lineChars = number.toCharArray();
    }
    
    // somewhere else in your program
    var employee = new Employee1("12345");
    

    希望这能帮助您解决您的问题,以获取有关
    NullPointException
    的更多信息以及它们发生的原因。

    Employee1
    构造函数中,
    number
    的值是多少?如果您得到一个不需要的和意外的
    NullPointerException
    ,那么您的代码中肯定至少有一个错误。@JohnnyMopp我最初将其命名为char[]lineChars=number.toCharArray();但我得到的是相同的problem@JohnBollinger仅当我在终端中运行Main.java时,我真的没有一个错误。@Storm\u troopa这是因为在ctor中
    number
    null
    。在尝试调用
    ToCharray之前,需要将其设置为某个值()
    。另外,
    ProductionWorker1
    类是否源自
    Employee1
    类?