2016-10-06 56 views
0

我无法理解如何设置和获取数组中的对象。请保持简单/简单;我是一名初学者。 我不能使用列表,因为我还没有在我的java类中。我们应该使用常规数组。访问数组中的对象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()); 
    } 



} 
+0

你应该看看这个https://docs.oracle.com/javase/tutorial/java/nut sandbolts/arrays.html – Titus

+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); 
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]

+0

我想感谢你们每个人的帮助。今天下班后我会阅读这些内容! –

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.