2016-10-06 4 views
0

Ich habe Probleme zu verstehen, wie Objekte in einem Array festgelegt und abgerufen werden. Bitte halte es einfach/einfach; Ich bin ein Anfänger. Ich kann keine Liste verwenden, da ich noch nicht in meiner Java-Klasse bin. Wir sollten reguläre Arrays verwenden.Zugriff auf Objekte in einem Array Java

Ich baue ein Programm, das Solarsystemobjekte erstellt und Planetenobjekte in das Objektarray des Sonnensystems einfügt. Ich muss in der Lage sein, den Planeten sowohl nach Index als auch nach Index einzufügen.

Das Erhalten der regulären Objektinfo war einfach, aber sobald Arrays hinzugefügt wurden. Es wurde hart. Ich verstehe besser, wenn ich verstehen kann, wie und warum etwas funktioniert. Hier ist mein Code. Vielen Dank im Voraus!

Planet Klasse

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; 

    } 
} 

Hier ist die Solarsystem-Klasse

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; 
    } 
*/ 

} 

Schließlich ist hier meine Treiber-Klasse, die die wichtigste Methode beherbergt

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

Sie sollten sich dies https://docs.oracle.com/javase/tutorial/java/nut ansehen sandbolts/arrays.html – Titus

+0

Ich schätze den Link. Ich lese es nur, aber es gibt nichts, was meine Frage betrifft.Ich habe jedoch etwas über Array-Grundlagen gelernt. –

Antwort

0

Sie sind ein paar Methoden fehlt von Ihrer SolarSystem Klasse

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 
} 

Dann können Sie es als

ourSolarSystem.setPlanet (Mercury, 0); 
0

Set Planet verwenden

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

Erhalten Planet

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

Sie lernen können von Objekten von hier mit array [http://www.javawithus.com/tutorial/array-of-objects]

+0

Ich möchte jedem von Ihnen dafür danken, dass Sie mir geholfen haben. Ich werde diese heute nach der Arbeit lesen! –

0

Sie müssen Methoden in Ihrer Sonnensystemklasse hinzufügen, um dem internen Array Objekte hinzuzufügen.

um ein Array zu füllen, benötigen Sie 2 Dinge 1. Größe 2. Elemente.

Ihre Solarsystemklasse enthält an dieser Stelle keine Vorkehrungen. Die Größe ist fest auf 8 codiert, was für dieses Beispiel gut ist. Idealerweise sollte sie im Konstruktor übergeben werden, während ein Solarsystem erstellt wird. Wenn Sie das für einen Moment ignorieren, sollten Sie in der Klasse eine Methode hinzufügen, um einen Planeten hinzuzufügen.

Da dies für das Lernen ist, addiere ich nicht genauen Code, nur Algorithmus

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. 
} 

Sie auch außerhalb eines Arrays schaffen könnte und mit dem Solar Planeten

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

Das Array hinzufügen Außen kann einfach erstellt werden

Planet[] planetArray = new Planet[8]; 
planetArray[0] = Mercury ; 

// and so on. 
Verwandte Themen