Java 将字符串数组从文件传递到对象数组

Java 将字符串数组从文件传递到对象数组,java,arrays,Java,Arrays,我会尽量保持简洁,只在需要时提供更多的代码。我在第26行得到一个空指针异常GMIstock[count].setName(值[0])。setName()方法只是设置一个字符串。最初我从另一个类传递了数组,但我认为这可能是我的问题的根源,并从这个类内部重新生成了数组。它传递到值[0到2]很好,但尝试将其从值[0]传递到产品[count]中的字符串会导致撕裂。我错过了什么 import java.io.File; import java.io.FileNotFoundException; impor

我会尽量保持简洁,只在需要时提供更多的代码。我在第26行得到一个空指针异常
GMIstock[count].setName(值[0])。setName()方法只是设置一个字符串。最初我从另一个类传递了数组,但我认为这可能是我的问题的根源,并从这个类内部重新生成了数组。它传递到
值[0到2]
很好,但尝试将其从
值[0]
传递到
产品[count]
中的字符串会导致撕裂。我错过了什么

import java.io.File;
import java.io.FileNotFoundException;
import java.util.Scanner;

public class Global_Inventory_Management {

String fileName = "src/data.csv";
File file = new File(fileName);
private Product[] GMIstock;

public void readStock() {

    try {

        Scanner reader = new Scanner(file);
        reader.next(); //ignore first line
        int count = 0; // I would use a for loop but the file could have values for any number of Products
        while(reader.hasNext()) {

            String data = reader.next();
            String[] values = data.split(",");
            System.out.println(values[0]);
            System.out.println(values[1]);
            System.out.println(values[2]);

            //runs fine till right here
            GMIstock[count].setName(values[0]); //sets name of type String in Product
            GMIstock[count].setQuantity(Integer.parseInt(values[1]));
            GMIstock[count].setPrice(Double.parseDouble(values[2]));
            count++;
            System.out.println(GMIstock[count].getName());
        }

    } catch (FileNotFoundException e) {
        e.printStackTrace();
    }       
}}

您需要初始化GMIstock。如果您使用的是Java 8+,请在扫描仪初始化之前添加以下内容

int fileSize = Files.lines( Paths.get( fileName ) ).count();
GMIstock = new Product[ fileSize ];
编辑

在循环文件行时,还需要初始化产品。在调用循环中的产品设置程序之前,请添加以下内容

GMIstock[ count ] = new Product(); // I'm assuming this constructor is valid.

在您发布的代码中,GMIStock[count]从未被赋值,这将使其为空。