在这种情况下,我是否需要动态添加对象?

时间:2015-12-06 21:06:53

标签: java

所以我被要求为我的课程创建一个简单的太阳系模拟器。我们的讲师根据构造函数的结构和课程方法制定了非常具体的指导原则。

我一直在考虑这个问题几个小时,并且不明白我如何在没有动态对象分配的情况下完成这项工作。我想在Planet []数组上添加行星,以便它们可以被索引,但我不知道我应该如何创建对象,考虑到一个要求是你可以向行星添加行星直到用户键入'DONE'。 / p>

Planet类不​​是要求之一,但他建议我们使用一个类来存储单个行星的变量并对其进行计算。而数据应存储在主要的SolarSystem类中。我们还需要使用FantasySolarSystem类来读取用户的数据并处理输出。

import java.util.*;

public class SolarSystem{
    public static final int PLANET_MAX = 10;
    public static void main(String[] args){
        String systemName; 
        Planet[] planetArray = new Planet[PLANET_MAX]; //const for array size seemed easier than dynamically allocating memory
        SolarSystem mySystem = new SolarSystem("Boris");
        // below is testing the addplanet function
        addPlanet("Jimmy", 10, 100);
        System.out.print(Planet[0].planetName);
    }
    public SolarSystem(String name){
        systemName = name;
    }

    public static void addPlanet(String planetName, double planetMass, double planetDistance){
        Planet newPlanet = new Planet(planetName, planetMass, planetDistance);
        // all i want to do here is add planets on to the array
        Planet[0] = newPlanet;
    }
}

这里仅供参考,是Planet类:

public class Planet{
    private String planetName;
    private double planetMass;
    private double planetDistance;
    private double planetPeriod;

    public Planet(String planetName, double planetMass, double planetDistance){
        this.planetName = planetName;
        this.planetMass = planetMass;
        this.planetDistance = planetDistance;
    }
    //sets the period for the current object
    public static calculatePeriod(double planetDistance){
        double period = Math.sqrt(planetDistance*planetDistance*planetDistance);
        setPlanetPeriod(period);
    }

    //accessors
    public String getPlanetName(){
        return planetName;
    }
    public double getPlanetMass(){
        return planetMass;
    }
    public double getPlanetDistance(){
        return planetDistance;
    }
    public double getPlanetPeriod(){
        return planetPeriod;
    }

    //mutators
    public void setPlanetName(String planetName){
        this.planetName = planetName;
    }
    public void setPlanetMass(double planetMass){
        this.planetMass = planetMass;
    }
    public void setPlanetDistance(double planetDistance){
        this.planetDistance = planetDistance;
    }
    public void setPlanetPeriod(double planetPeriod){
        this.planetPeriod = planetPeriod;
    }
}

非常感谢任何帮助。

编辑:我会写它并测试它但是我得到错误说,在引用对象数组的地方找不到符号

edit2:修复了从静态方法问题访问非静态方法的问题,但仍然遇到向数组添加对象的问题(还有3个无法找到符号错误,systemName = name;两次我都使用Planet [0] )

0 个答案:

没有答案