2016-10-06 76 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.