如何将跑步者添加到结果数组中

时间:2013-11-29 23:39:08

标签: java arrays for-loop populate runner

我一直试图弄清楚如何将跑步者信息添加到跑步者信息数组中。它最多应包含100名参赛者。

这是必须满足这些要求的大型项目的一部分:

操作(方法):

•接受比赛名称和距离的构造函数。

•名称和距离实例变量的getter和setter。

•返回添加到数组中的RunnerResult对象数的计数的方法。

•将RunnerResult添加到数组的方法(给定Runner实例和跑步者的结束时间)。

•获取RunnerResult对象的方法;一个接受RunnerResult被添加的位置(直接从数组中访问对象)和一个接受一个跑步者名称(用于搜索匹配的跑步者)的位置。第一个跑步者的指数是0,第二个是1,等等。

•一种带有条件逻辑的方法,用于计算某个类别(青年,成年人,老年人,男性,女性,所有人)的所有参赛者的数量,这些参赛者以一个整数传入的旗帜(1,2,3, 4,5,6分别实现为公共常量)。类似的方法提供了每个潜在类别的平均比赛结果(完成比赛的时间)。

•具有条件逻辑的方法可以找到比赛时间小于每英里指定分钟数的跑步者。例如,找到所有参加比赛的跑步者,每英里时间少于8分钟。

•一种toString方法,简单地给出比赛名称,比赛距离,比赛中总跑步者的数量,以及比赛中所有参赛者的平均时间。

到目前为止,这就是我所拥有的:

public class Race
{
    // instance variables
    private String name;
    private double distance;
    private int nextPos;
    private RunnerResult [] results;


    // public constants

    /**
     * Flag to signify YOUTH.
     */
    public static final int YOUTH = 1;



    /**
     * Flag to signify ADULT.
     */
    public static final int ADULT = 2;

    /**
     * Flag to signify SENIOR.
     */
    public static final int SENIOR = 3;

    /**
     * Flag to signify MALE.
     */
    public static final int MALE = 4;

    /**
     * Flag to signify FEMALE.
     */
    public static final int FEMALE = 5;

    /**
     * Flag to signify ALL.
     */
    public static final int ALL = 6;

    /**
     * Array limit.
     */
    public static final int MAX_COUNT = 100;


    /**
     * Constructor for objects of class Race.
     *
     * @param  inName the race name.
     * @param  inDist the distance of the race.
     *
     */
    public Race(String inName, double inDist)
    {
        // initialize the instance variables and 
        // empty array of results, initalize nextPos
        this.name = inName;
        this.distance = inDist;
        RunnerResult[] results = new RunnerResult[100];
    }

    /**
     * Set the race Name.
     * 
     * @param  inName the race name.
     *  
     */
    public void setName(String inName)
    {
        this.name = inName;
    }

    /**
     * Get the race Name.
     * 
     * @return String The race name.
     *  
     */
    public String getName()
    {
        return this.name;
    }   

    /**
     * Set the race distance.
     * 
     * @param  inDist the distance of the Race.
     *  
     */
    public void setDist(double inDist)
    {
        this.distance = inDist;
    }

    /**
     * Get the race distance.
     * 
     * @return double the distance of the race.
     *   
     */
    public double getDist()
    {
        return this.distance;
    }    

    /**
     * Add a runner to the results
     * (runners are NOT entered in order of finish).
     * 
     * @param  inChip   the runner's chip id.
     * @param  inRunner a Runner object.
     * @param  inStart  the start time for the runner.
     * @param  inEnd    the end time for the runner.
     *  
     */
    public void addRunner(String inChip, Runner inRunner, Time inStart, Time inEnd)
    {
        if (this.nextPos < MAX_COUNT)
        {
            // set the instance field element to a "copy" of passed-in object
            // add to array, increment counter

            for(int i = 0; i < results.length; i++);
            {
                RunnerResult[] results = { copyinChip, copyinRunner, copyinStart,  
                    copyinEnd };

                i++;
            }
        }
    }  
}

我无法弄清楚如何将这些值放入数组中。 (我得到了一个不兼容的类型错误。任何输入都会非常感激。

1 个答案:

答案 0 :(得分:0)

这里有两件事。

1。)当你重新声明results时,你没有引用你声明为字段的同一个对象,而是一个完全没有目的的全新对象,因为它只存在于{{1 }}

2。)当您指定addRunner时,您没有向阵列添加新的跑步者。相反,您每次执行该循环时都会重新分配整个数组。您可能想要创建一个新的results = { ---, ---, ---, ---};对象,向其添加必要的数据,然后将其放在结果[];

这里有一个例子:

RunnerResult