当前位置: 首页 > 知识库问答 >
问题:

线程“main”java中出现异常。lang.NullPointerException:无法读取数组长度,因为“”为null[重复]

戚甫
2023-03-14

我有这个主代码

    public static void main(String[] args)
    {
        //display Gui
        DisplayGUI();
        //input Person
        InputPerson();
        //display input data
        Display();
        //sort person
        //SortbySalary();
        //display sorted person
        //Display();        
        
    }

    private static void DisplayGUI() {
        System.out.println("=====Management person Programmer=====");
    }
    
    private static void InputPerson() {
        //array of person
        Person persons[] = new Person[3];
        //constructor
        Person person = new Person();
        
        for(int i = 0; i<3; i++){
            persons[i] = person.InputPersonInfo(person.getName(),person.getAddress(),person.getSalary());
        }
        
        for (Person p: persons){
            person.DisplayPersonInfo(p);
            System.out.println();
        }        
    }

    public static void Display() {
        Person person = new Person();
        Person persons[] = null;
                for (Person p: persons){
            person.DisplayPersonInfo(p);
            System.out.println();
        } 
    }
}

这是我的个人课

class Person {
    private String name;
    private String address;
    private double salary;

    public Person() {
    }

    public Person(String name, String address, double salary) {
        this.name = name;
        this.address = address;
        this.salary = salary;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getAddress() {
        return address;
    }

    public void setAddress(String address) {
        this.address = address;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }
    
    public Person InputPersonInfo(String name, String address, double salary){
        Scanner sc = new Scanner(System.in);
        System.out.println("Input Information of person:");
        System.out.println("Please input name:");
        name = sc.nextLine();
        System.out.println("Please input Address)");
        address = sc.nextLine();
        System.out.println("Please input salary:");
        salary = sc.nextDouble();
        
        return new Person(name,address,salary);
        
    }
    public void DisplayPersonInfo(Person persons){
        System.out.println("Information of Person you entered");
        System.out.println("Name:" + persons.getName());
        System.out.println("address:" + persons.getAddress());        
        System.out.println("slary:" + persons.getSalary());        
    }

我不明白当我在InputPerson()类中推送这段代码时,它会显示我输入的人的信息

        for (Person p: persons){
            person.DisplayPersonInfo(p);
            System.out.println();
        } 

但当我在Display()类中尝试这样做时,它总是告诉我错误“无法读取数组长度,因为”“为null”

我不知道如何将我在InPutPerson()类中输入的数据传递到Display()类,请帮助我

共有1个答案

方谦
2023-03-14

InputPerson方法应返回persons,然后将此输出用作display(persons)方法中的参数。

比如:

    public static void main(String[] args) {
        //input Person
        Person persons[] = InputPerson();
        //display input data
        display(persons);

    }

    private static Person[] InputPerson() {
        Person persons[] = new Person[3];
        Person person = new Person();

        for (int i = 0; i < 3; i++) {
            persons[i] = person.InputPersonInfo(person.getName(), person.getAddress(), person.getSalary());
        }

        for (Person p : persons) {
            person.displayPersonInfo(p);
            System.out.println();
        }
        return persons;
    }

    public static void display(Person[] persons) {
        Person person = new Person();
        for (Person p : persons) {
            person.displayPersonInfo(p);
            System.out.println();
        }
    }
}

 类似资料:
  • 我有任务要做,我有一个问题,我得到了错误。我不知道如何修理它: 异常线程"main"java.lang.NullPointerExcema在test.main(test.java:29) 这是我的密码:

  • 我的代码中出现了这个错误。 这是我的代码: 这就是结果。错误:在线程“main”java中输入model:Exception。lang.NullPointerException在汽车上。主(车.java:10)

  • 我对Java非常陌生,似乎遇到了一些奇怪的错误。我到处寻找解决方案,我遇到的所有解决方案都与我已有的完全相同。 我已经编写了一个类,将目的地添加到ArrayList,但它不起作用。 我得到了这个错误:“线程中的异常”main“java.lang.NullPointerException” 这是我的代码: 我试图添加到ArrayList的数据的代码是这样的: 它退出方法中的程序,并且不将目标添加到数

  • 我有一个java中的练习,它的文本是: 矩阵类表示整数数组。其框架如下:公共类矩阵{private int[]]mat;/*创建一个矩阵对象,其内容由矩阵矩阵表示。*/public Matrix(int[][]mat){…}/*返回由调用该方法的对象表示的矩阵元素之和。*/public int sumElements(){…}/*通过移除行i和列j*/公共子矩阵矩阵(int i,int j){。。

  • 我在ViewModel中编写了单元测试,并与mockito协作。类,但我得到以下异常 在我的ViewModel类下面,我在其中实现了视图模型逻辑 低于存储库类 接口类下面 接口GiphyTaskApiService{ 低于我的ViewModel测试类 我试过的 1。[我尝试了以下链接][1] onCreation_fetchUserApiCalled_dataSavedToLiveDataNull

  • 我正在通过selenium学习自动化测试教程,并且正在用java语言编写我的第一个脚本,并且在Eclipse的“控制台”中得到了这条消息。 我的代码: 教程链接:http://toolsqa.wpengine.com/selenium-webdriver/first-test-case/