繁体   English   中英

在Java中对数组使用get和set方法

[英]Using get and set methods with arrays in java

我有一部分Java作业要求我使用set方法将详细信息输入到数组中。 到目前为止,我有以下方法来设置详细信息

public void setCanopy(String uniqueRef, String modelName, int width, int height, int depth, int crewToBuild, double timeToBuild, double trailerLength, String available)
{
    this.uniqueRef = uniqueRef;
    this.modelName = modelName;
    this.width = width;
    this.height = height;
    this.depth = depth;
    this.timeToBuild = timeToBuild;
    this.available = available;
    this.crewToBuild = crewToBuild;
    this.trailerLength = trailerLength;     
}

只要只用于向构造函数输入详细信息,此方法就可以正常工作,但是当我尝试将其与数组一起使用时,会收到NullPointerException。

稍后,我还必须在使用get方法时显示这些详细信息。 我正在使用以下方法来显示这些内容,但同样,它仅在使用构造函数时才有效。

public static void displayCanopyDetails(Canopy c)
{
    System.out.println("Canopy reference number: " + c.getUniqueRef() + "\nCanopy model name: " + c.getModelName() + 
    "\nCanopy Dimensions (cm) - Width: " + c.getWidth() + " Height: " + c.getHeight() + " Depth: " + c.getDepth() +
    "\nCrew to build: " + c.getCrewToBuild() + "\nTime to build canopy (minutes): " + c.getTimeToBuild() + 
    "\nTrailer Length: " + c.getTrailerLength() + "\nAvailability: " + c.getAvailable());
}

任何帮助这些与阵列一起使用的帮助将不胜感激。 谢谢。

在我的主要方法中

tentDetails(c[0]);

调用方法

public static void tentDetails(Canopy c1,)
{
    c1.setCanopy("CAN123", "Model1", 500, 200, 500, 5, 15, 10, "Available");
}

NullPointerException错误在尝试运行此方法时发生。

声明数组时,它将为对象创建一个空的“包”,但不会创建对象本身。 当在此数组中的对象上使用方法时,您会收到NullPointerException,因为该对象为null。 您不能在创建对象之前对对象执行方法。 例如:

Canopy[] canopy=new Canopy[5];  //Creates a 'storage' for 5 Canopy objects
System.out.println(Canopy[0]); //Prints null and throws NPE if you execute method

Canopy[0]=new Canopy();  //Create new Canopy object and insert it in the array

System.out.println(Canopy[0]); //Not null anymore - you can execute methods
Canopy[0].setCanopy("CAN123", "Model1", 500, 200, 500, 5, 15, 10, "Available"); // works fine

在Java中,规则是创建数组时,其元素将接收默认值。 Object的默认值为null,因此,数组中的每个元素最初都是null。 您必须像这样显式实例化Canopy对象:

for (int i = 0; i < c.length; i++) {
    c[i] = new Canopy();
}

之后,您可以安全地在数组的每个元素上调用tentDetails()方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM