访问数组Java

时间:2016-10-06 05:21:59

标签: java arrays object accessor

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

我正在构建一个程序,用于创建太阳系对象并将行星对象放入太阳系对象阵列中。我必须能够通过索引插入行星,并通过索引获取它。

获取常规对象信息很简单,但一旦添加了数组。它变得艰难。当我能理解某些东西是如何运作的时候,我会更清楚。这是我的代码。非常感谢提前!

Planet Class

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());
    }



}

3 个答案:

答案 0 :(得分:0)

您遗漏了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);

答案 1 :(得分:0)

设置星球

public void setPlanet(int index,String planetName,int numOfMoon) 
{
   //check array bounday
   allPlanets[index].setPlanetName(planetName);
   allPlanets[index].setNumMoons(numOfMoon);
}

获取星球

public Planet getPlanet(int index) 
{
   //Check array bounday
   return allPlanets[index];
}

您可以从这里[http://www.javawithus.com/tutorial/array-of-objects]

学习使用对象数组

答案 2 :(得分: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.