【问题标题】:how do you use a for-loop over an object array and return a string listing information of the objects如何在对象数组上使用 for 循环并返回对象的字符串列表信息
【发布时间】:2018-03-03 18:35:32
【问题描述】:

我有一个对象数组,每个对象都有特定人的信息,我如何遍历该数组中的每个对象并在此 toString() 中返回它们的信息?

     @Override
 public String toString()
 {
     String tempString = " ";
      for(int i = 0; i < personArray.length; i++)
     {
         tempString = " All people currently residing on the stack: " +personArray[i];
     }


     return ""+tempString;
 }

我知道不需要数组来执行此操作,但我只是想知道如何使用 for 循环来执行此操作。我会继续努力,但我只是想知道。

【问题讨论】:

  • 你为什么不直接调用toString()
  • 你已经在这样做了(以一种奇怪、尴尬、错误和低效的方式,但那是另一回事)。你执行过这段代码吗?你期望它做什么,它会做什么? Java中的连接运算符是什么?所有 Java 教程和书籍都有这些信息:docs.oracle.com/javase/tutorial/java/data/strings.html
  • @AniketSahrawat 他已经在隐式调用 toString()。
  • 您希望看到什么结果?
  • @JBNizet 我认为他的意思是调用代码中不可见的某个对象的方法toString()。我不确定他是否打算调用 personArray[i] 的 toString。

标签: java arrays object tostring


【解决方案1】:

您一直在验证 for 循环中的字符串。你应该把一个附加到另一个。简而言之,将您当前的结果与以前的结果连接起来。

 for(int i = 0; i < personArray.length; i++)
     {
         tempString += " All people currently residing on the stack: " +personArray[i];
             --------^
     }

这样您可以存储以前的对象字符串表示法并将新结果添加到其中。最后你可以在tempString得到一个完整的结果。

更具可读性和效率的方法是使用StringBuilder

   @Override
 public String toString()
 {
     StringBuilder builder = new StringBuilder();
      for(int i = 0; i < personArray.length; i++)
     {
         builder.append(" All people currently residing on the stack: " +personArray[i]);
     }


     return builder.toString();
 }

请注意,您必须已经实现了 Person 类的 toString 方法,否则您最终会在结果中看到gibberish output

【讨论】:

  • 也可以使用StringBuilder,如果数组中有大量项,这可能是更好的解决方案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-27
  • 1970-01-01
  • 2016-05-29
  • 2018-01-04
  • 2014-07-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多