我创建了一个String方法,该方法使用循环来返回对象的所有数据元素。问题是,因为它是一个return语句,它将循环一次,然后在执行return语句后退出该方法。
我查看了StackOverflow和互联网,但无法协助自己解决这个问题。
代码:
public String display()
{
for (int i=0; i<count; i++) //assume count has the value of 3
{
return "Name: "+item[i].getName(); //this is the issue; only loops once, then exits method
//also assume that an object item[] has been initialised with 3 positions
}
}
答案 0 :(得分:1)
你正在循环中返回,所以一旦它执行return
语句,它将从方法返回而不进一步迭代循环
使用StringBuilder
到append()
内容,最后(循环后)返回构建String
答案 1 :(得分:1)
这是人们遇到return
语句时遇到的常见问题。在这种情况下,我通常会创建一个新的String并让它返回。例如:
public String display()
{
String s = "Name: ";
for (int i = 0; i < 3; i++)
{
s = s + item.getName();
}
return s;
}
这样,您正在积极地添加一个您计划稍后返回的新字符串。事实证明,这种方法对我很有帮助,不仅有字符串,还有整数和ArrayLists。因为return语句会导致代码退出,所以除非你有一些特定的理由在方法的前面加上return语句,否则你会想要尝试将它们保存在方法的末尾。
答案 2 :(得分:0)
您的代码无效的原因是它在您到达循环语句后立即返回。函数具有返回值,并且在java中,返回“x”语句将值“x”返回到前一个语句。
假设您在代码中写道
entireArray = display();
在执行期间到达该语句时,将调用display方法。然后代码跳转到显示方法。当调用display方法时,它会跳转到你的循环中。在第一行,它看到return "Name: "+item[i].getName();
这将获得第一个项目的名称,将其附加在“名称:”后面。然后该函数返回上一行,wholeArray = display();
基本上,display()随后被函数的返回值替换。如果你想确保包含所有内容,请将代码建模为:
public String display() {
String total = "Name: ";
for (int i = 0; i < item.length; i++) {
total += item[i].getName();
}
return total;
}
这确保返回“item”数组中的每个项目的名称。
我建议您阅读一些关于调用堆栈http://en.wikipedia.org/wiki/Call_stack的内容。这将有助于解释函数如何返回值,以及原始代码无效的原因。