【问题标题】:Java: Displaying all elements from an array [closed]Java:显示数组中的所有元素[关闭]
【发布时间】:2014-07-29 16:11:36
【问题描述】:

我创建了一个使用循环返回对象的所有数据元素的 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
    }
}

【问题讨论】:

  • 不要在for循环内返回
  • return 表示“结束这个方法,现在” - 观察到的行为只是合适的。
  • 你能多展示一些你正在尝试做的事情吗?您是什么意思“返回对象的所有数据元素”?你怎么知道有3个? item 是什么?或许有更好的答案;例如,如果item 是一个数组,并且你想将它变成一个字符串,你可以使用Arrays.toString(item)

标签: java loops for-loop methods return


【解决方案1】:

您的代码不工作的原因是它在您到达循环中的语句时立即返回。函数有返回值,在java中,return "x" 语句将值"x" 返回到前一个语句。

假设你写在你的代码中

entireArray = display();

在执行期间到达该语句时,将调用 display 方法。然后代码跳转到 display 方法。当调用 display 方法时,它会跳转到你的循环中。在第一行,它看到 return "Name: "+item[i].getName(); 这获取第一个项目的名称,将其附加在“名称:”后面。然后函数返回上一行,fullArray = 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 的信息。这将有助于解释函数如何返回值,以及为什么您的原始代码不起作用。

【讨论】:

    【解决方案2】:

    你在循环内返回,所以一旦它执行return 语句,它就会从方法中返回,而无需进一步迭代循环

    使用StringBuilderappend() 内容并在最后(循环后)返回构建的String

    【讨论】:

    • 或许值得向 op 解释他们为什么会面临这个问题。
    【解决方案3】:

    这是人们在使用return 语句时遇到的常见问题。在这种情况下,我通常会创建一个新字符串并让它返回。例如:

    public String display()
    {
         String s = "Name: ";
         for (int i = 0; i < 3; i++)
         {
             s = s + item.getName();
         }
    
         return s;
    
    }
    

    这样,您正在积极地添加一个您计划稍后返回的新字符串。事实证明,这种方法对我非常有帮助,不仅适用于字符串,还适用于整数和 ArrayList。因为 return 语句会导致你的代码退出,所以你会想要尝试将它们保留在方法的末尾,除非你有一些特定的原因在方法的前面有 return 语句。

    【讨论】:

    • 使用 StringBuilder 是最好的方法,而不是连接
    • @ImmerAllein 在原始帖子中,循环中有一个 return 语句。我认为最简单的答案是在这种情况下最好的
    猜你喜欢
    • 1970-01-01
    • 2013-12-03
    • 1970-01-01
    • 2022-08-13
    • 1970-01-01
    • 2017-08-22
    • 2017-03-25
    • 2016-02-12
    • 1970-01-01
    相关资源
    最近更新 更多