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