我试图在数组中编写一个循环来获取toString中的结果

时间:2012-11-25 00:51:38

标签: java

/**
     * 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几天了。有人可以帮我弄清楚如何编写一个循环,从头到尾显示数组中的所有元素。我只是不停地陷入困境。正如你所看到的,我已经开始编写一个循环,但现在我不知道它是否正确启动。谢谢!

3 个答案:

答案 0 :(得分:2)

您尚未在output循环中添加for()字符串中的内容!您需要将其更改为:

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

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

祝你好运!

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

答案 1 :(得分:1)

嗯,如果你在一个循环中这样做并经常这样做,你可以考虑StringBuilderString在Java中是不可变的,因为它,你只会得到一堆新的字符串在那个循环中产生。 IYKWIM

一个简短的例子

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

return output.toString();

答案 2 :(得分:0)

如果要连续结果,只需执行与此处output += "Competition Results:" + "\n";相似的操作。在循环中做同样的事情:

 for (int i = 0; i < this.nextPos; ++i)
        {
            output += this.results[i].getRFID().toString();
            output += " "; // you may want to separate the strings
            output += this.results[i].getGender().toString();

        }

顺便说一句这种方法非常慢,请参阅here有关不同字符串联系技术的比较。

更快的方法是使用StringBuilder

StringBuilder sb = new StringBuilder();

  for (int i = 0; i < this.nextPos; ++i)
            {
                sb.append(this.results[i].getRFID().toString());
                sb.append(this.results[i].getGender().toString());

            }