0
/**
     * get a formatted string with information about a competition.
     * 
     * @return String String with information about a competition.
     * 
     * The output should be in the following format:
     * <pre>
     * Rodent's Information:
     * Rat RFID 787878787
     * Gender: F
     * Vaccination status: false
     * 
     * Maze Information:
     * Start Time: 00:00:00
     * End Time: 01:00:05
     * Actual Time: 01:00:05
     * Contest Time: 00:59:30
     * </pre>
     * 
     */
    public String toString()
    {
        // your code here, replace the "X" and -9 with appropriate
        // references to instance variables or calls to methods
        String output = "Competition Description: " + this.desc
            + "\nCompetition Count: " + this.count + "\n";
        output += "Competition Results:" + "\n";
        // loop through the array from beginning to end of populated elements
        for (int i = 0; i < this.nextPos; ++i)
        {
            this.results[i].getRFID();
            this.results[i].getGender();


            // get toString() for each result


        return output;
    }

大家好,我已经坚持写这个 toString 好几天了。有人可以帮我弄清楚如何编写一个循环来从头到尾显示数组中的所有元素。我只是一直卡住。如您所见,我已经开始编写一个循环,但现在我不知道它是否开始正确。谢谢!

4

2 回答 2

2

你还没有在你的循环中添加你得到的output字符串!for()您需要将其更改为:

for (int i = 0; i < this.nextPos; ++i)
{
    output += this.results[i].getRFID();
    output += this.results[i].getGender();
    output += "\n";
}

添加您喜欢的任何其他格式。代码中的注释表明,您需要在每次循环中添加一个类似“Rodent's Information:”的字符串,以及每个字段的标题和指示符以及它们之间的换行符。

祝你好运!

此外,为了扩展@Matt 在您问题下方的评论中所说的内容,您在for()循环中的比较非常奇怪,并且可能没有按照您的意愿进行(尽管可能是这样,而且我们都只是公约的坚持者)。通常,在遍历数组或集合时,您将比较集合的长度,而不是“下一个位置”中的某个值(这是我假设变量的含义)。

于 2012-11-25T00:54:31.570 回答
1

嗯,如果你在循环中这样做并且你经常这样做,你可能会考虑StringBuilder. Strings 在 Java 中是不可变的,因为它,您只会在该循环中随处生成一堆新字符串。伊克维姆

一个简短的例子

StringBuilder output = new StringBuilder("");
for(int i = 0; i < this.nextPos; ++i) {
 output.append(this.results[i].getRFID());
 ...  
}

return output.toString();
于 2012-11-25T01:00:36.153 回答