Java:显示数组中的所有元素

时间:2014-06-09 06:38:15

标签: java loops for-loop methods return

我创建了一个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
    }
}

3 个答案:

答案 0 :(得分:1)

你正在循环中返回,所以一旦它执行return语句,它将从方法返回而不进一步迭代循环

使用StringBuilderappend()内容,最后(循环后)返回构建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的内容。这将有助于解释函数如何返回值,以及原始代码无效的原因。