读取文件时未返回正确的值。返回“null”

not returning the correct values while reading a file. "null" is returned instead

提问人:Cindy_ l 提问时间:5/12/2023 更新时间:5/12/2023 访问量:42

问:

我正在读取 csv 文件,我有两个对象。第一个对象称为 Project,另一个对象称为 Location。

public class Project
{
    private String province;
    private String beneficiary;
    private String beneficiaryNum;
    private String assetClass;
    private String name;
    private String stage;
    Location location;

public Project(String pProvince, String pBeneficiary, String pBeneficiaryNum, String pAssetClass, String pName, String pStage, Location pLocation)
    {
        province = pProvince;
        beneficiary = pBeneficiary;
        beneficiaryNum = pBeneficiaryNum;
        assetClass = pAssetClass;
        name = pName;
        stage = pStage;
    }

public String toString()
    {
        return province + "\n" + beneficiary + "\n" + beneficiaryNum + "\n" + assetClass + "\n" + name + "\n" + stage + "\n" + location;
    }
...
public class Location
{
    private double latitude;
    private double longitude;
    private String coordinateSystem;

public Location(double pLatitude, double pLongitude, String pCoordinateSystem)
    {
        latitude = pLatitude;
        longitude = pLongitude;
        coordinateSystem = pCoordinateSystem;
    }

public String toString()
    {
        return latitude + "\n" + longitude + "\n" + coordinateSystem;
    }
...

问题出在方法 processLine() 中

public static Project processLine(String pLine)
    {

        String[] lineSplit;
        lineSplit = pLine.split(",");
        
        //Converts the string in lineSplit[7] into a Double called 'lat'
        Double lat = Double.valueOf(lineSplit[7]);

        //Converts the string in lineSplit[8] into a Double calle 'lon'
        Double lon = Double.valueOf(lineSplit[8]);

        //Creates a new location object
        Location pLocation = new Location(lat, lon, lineSplit[9]);
        Project pProject = new Project(lineSplit[0],lineSplit[1],lineSplit[2],lineSplit[3],lineSplit[4],lineSplit[6],pLocation);

        return pProject;
        
    }

当我返回pProject并尝试打印它时,它会打印出来

//below is lineSplit[0,1,2,3,4,6]
Saskatchewan
All Nations Healing Hospital
9999
Health
Design and construction of a new community health facility.
Completed
//below is pLocation
null

我试图隔离pLocation并打印它,它返回

//pLocation
50.761877 //lat
-103.787043 //lon
GCS_North_American_1983_CSRS //lineSplit[9]

但是当我尝试打印出pProject时,将pLocation作为字段,它打印出null

如何让它打印出带有 pLocation 的 pProject?

我是提问的新手,所以如果我以错误的方式陈述了任何事情,或者没有提供足够的信息,请告诉我,这样我就可以提供信息并改进:)

java csv 对象 读取文件

评论

1赞 Joachim Sauer 5/12/2023
您没有将参数分配给标头中的任何内容。您的 IDE 应该已通知您这一事实。pLocationProject
0赞 Arun Sudhakaran 5/12/2023
您正在获取 的 作为构造函数参数,但您没有将其分配给 的内部。你应该在构造函数中做一些事情。LocationProjectLocationProjectthis.location = pLocation;Project
0赞 Cindy_ l 5/12/2023
谢谢,我应该正确检查我的构造函数。

答:

3赞 Hulk 5/12/2023 #1

构造函数缺少参数 的赋值。ProjectpLocation

public Project(String pProvince, String pBeneficiary, String pBeneficiaryNum, String pAssetClass, String pName, String pStage, Location pLocation)
{
    province = pProvince;
    beneficiary = pBeneficiary;
    beneficiaryNum = pBeneficiaryNum;
    assetClass = pAssetClass;
    name = pName;
    stage = pStage;
    location = pLocation; // was missing
}

评论

0赞 Cindy_ l 5/12/2023
非常感谢,我试图找到问题几个小时:(