我无法理解如何在数组中设置和获取对象。请保持基本/简单;我是初学者。 我不能使用列表,因为我还没有在我的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());
}
}
答案 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];
}
学习使用对象数组
答案 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.