【问题标题】:accessing objects in an array Java访问数组Java中的对象
【发布时间】:2016-10-06 05:21:58
【问题描述】:

我无法理解如何设置和获取数组中的对象。请保持基本/简单;我是初学者。 我不能使用列表,因为我的 java 类中还没有列表。我们应该使用常规数组。

我正在构建一个程序来创建太阳系对象并将行星对象放入太阳系对象数组中。我必须能够按索引插入行星以及按索引获取它。

获取常规对象信息很简单,但是一旦添加了数组。它变得艰难。当我能够理解某事如何以及为什么起作用时,我会更好地理解。这是我的代码。非常感谢!

行星类

public class Planet {

    // private fields
    private String planetName;
    private int numMoons;


    // param constructor
    public Planet(String n, int m){
        planetName = n;
        numMoons = m;

    }

    public String toString(){
        return planetName + " " + numMoons;
    }



    public void setPlanetName(String n){
        this.planetName = n;

    }

    public String getPlanetName(){
        return planetName;

    }

    public void setNumMoons(int m){
        this.numMoons = m;

    }

    public int getNumMoons(){
        return numMoons;

    }
}

这是 SolarSystem 类

package project03;

public class SolarSystem {

    private String solarSystemName;
    private Planet[] allPlanets = new Planet[8];
    private int numPlanets;

    public SolarSystem(String ss, int np){
        solarSystemName = ss;
        numPlanets = np;


    }

    public void setSolarSystemName(String ss){
        solarSystemName = ss;

    }

    public String getSolarSystemName(){
        return solarSystemName;
    }

    /*public void setAllPlanets(String ss){
        solarSystemName = ss;

    }

    public String getSolarSystemName(){
        return solarSystemName;
    }
*/

}

最后是包含主要方法的驱动程序类

package project03;

public class Driver {

    public static void main(String[] args) {


        // creates planet object
        Planet Mercury = new Planet("Mercury", 0);
        Planet Venus = new Planet("Venus", 0);
        Planet Earth = new Planet("Earth", 1);
        Planet Mars = new Planet("Mars", 2);
        Planet Jupiter = new Planet("Jupiter", 67);
        Planet Saturn = new Planet("Saturn", 62);
        Planet Uranus = new Planet("Uranus", 27);
        Planet Neptune = new Planet("Neptune", 14);



        SolarSystem ourSolarSystem = new SolarSystem("Sol-System", 8);

        System.out.println("Planet name is : " + ourSolarSystem.getSolarSystemName());
        //System.out.println("Moon number is :" + Mercury.getNumMoons());
    }



}

【问题讨论】:

标签: java arrays object accessor


【解决方案1】:

您的SolarSystem 类中缺少几个方法

public void setPlanet (Planet planet, int pos) {
   allPlanets [pos] = planet;  // pos is zero based
}

public Planet getPlanet (int pos) {
   return allPlanets [pos];  // pos is zero based
}

那么你就可以把它当做

ourSolarSystem.setPlanet (Mercury, 0);

【讨论】:

    【解决方案2】:

    您必须在太阳系类中添加方法才能将对象添加到内部数组。

    要填充一个数组,你需要两件事 1. 尺寸 2. 元素。

    您的太阳系课程目前没有任何规定。大小被硬编码为 8,这对于这个例子来说很好,理想情况下它应该在创建太阳系时传递给构造函数。 暂时忽略这一点,您应该在类中添加方法以添加行星。

    由于这是为了你的学习,我没有添加确切的代码,只是算法

    public void addPlanet(Planet p, int pos){
    //check pos is less than array size
    // add planet to the index pos if pos is less than size.
    }
    

    您也可以在外面创建一个数组并将其添加到太阳行星

    public void addPlanets(Planet[] planetArray){
    // replace current planet array with the array passed in input
    }
    

    外面的数组可以轻松创建

    Planet[] planetArray = new Planet[8];
    planetArray[0] = Mercury ;
    
    // and so on.
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-27
      • 2018-04-16
      • 2023-03-30
      相关资源
      最近更新 更多