【问题标题】:Method Returning list of Strings from an ArrayList方法从 ArrayList 返回字符串列表
【发布时间】:2019-12-02 23:30:02
【问题描述】:

我让这个程序将一个由单词组成的文件逐行读取到我的 Arraylist 中,然后我想将这个 ArrayList 也逐行打印到我的控制台上,但是,我只能从该列表中打印 1 个单词(你可以从我下面的代码中理解为什么)。我会很感激各种意见。

*注意1:我已经测试了我的阅读器方法和我的 ArrayList,它们似乎运行良好,我可以看到添加到我的 ArrayList 中的所有元素。

*Note2:我可以用 print-stream 打印出来,但是我不能更改方法签名,因此我必须用这个方法返回 String,我找不到任何方法将整个列表打印到我的控制台.

*编辑:为了澄清我不想打印列表,我希望这个方法将字符串(作为包含所有元素的列表)传递给另一个类的方法,该方法将我从这个方法返回的这个字符串放到文本上我用 GUI 创建的框。因此,我需要这种方法以某种方式“返回 String(arStr)”,但我还想不通。

public static String toStringFromArrayList(ArrayList<String> arStr) {
    String result = null;
    for (String s : arStr) {
        result = s;

    }
    return result;
}

** 这就是我的意思,如果有人需要类似的解决方案,可以在下面查看 **

public static String toStringFromArrayList (ArrayList<String> arStr) {

    String result ="";



     for (String s: arStr) {



      result += s+"\n";



     }

return result;

【问题讨论】:

  • 阅读this article 了解调试代码的一些技巧。这将帮助您了解您的代码在做什么。
  • toString() 不需要 String
  • 要打印整个列表,您可以使用System.out.println(arStr);。不过,这会将整个列表打印在一行上。
  • 必须定义逻辑,多个字符串的列表如何变成单个字符串。 return arStr.toString(); 是正确的吗?或者更确切地说return String.join("\n", arStr);?我们不知道你想要什么。

标签: java arraylist collections


【解决方案1】:

您只返回最后一个字符串并且不打印任何内容。 这将打印 ArrayList n ints 自己的行的每个元素

public static void toStringFromArrayList (ArrayList arStr) {
    for (String s: arStr) {
        System.out.println(s);
    }
}

这应该可以解决您的问题,如果您需要进一步的帮助,请告诉我。

【讨论】:

  • 感谢您的回答,是的,我可以使用它,但是,我的方法要求我有一个 return String 语句,否则,我会收到错误消息“此方法必须返回 String 类型的结果”
  • @Gwaithim 没问题。那是因为你的方法是字符串类型的。如果您查看我的代码,它的类型为 void,因此我不需要返回任何内容。尝试用我的方法替换您现有的方法,然后再试一次,如果它不起作用或者您需要进一步的帮助,请告诉我:) - Ankit
  • 嗨 Ankit 感谢您的跟进。该方法意味着返回字符串,所以我无法更改它,但我找到了另一种逐行返回字符串的方法:)
【解决方案2】:

您在循环中将每个元素分配给result。然后你返回最后一个作业,因此你只打印一个单词

例如:假设您在arStr 中有单词“this,that,so,and she”,那么she 将是分配给“result”的最后一个单词,然后您将返回该单词。

另外,如果你想将null 分配给结果,那么你应该省略空周围的"",因为现在你将字符串值"null" 分配给变量结果而不是空值

编辑:最后一个提示,如果您使用Java 8 或更高版本,您还可以使用arraylist 的forEach() 方法打印每个字符串值。这就是你要做的。

arStr.forEach(element -&gt; System.out.println(element));

如果你使用这个,你就不再需要你做的方法了。

【讨论】:

  • 感谢您的输入,我找到了该方法,但是由于我的方法签名要求我返回字符串,因此我无法使用您建议的方法,因为该方法返回 void。当我尝试实现时,我收到一条错误消息,指出“此方法必须返回字符串类型的结果”也许只是我是个菜鸟。
  • @Gwaithim 你不再需要你的方法了,你可以使用forEach 代替它,你所要做的就是打印列表中的单词不是吗?所以在没有调用自己方法的地方使用forEach,删除自己的方法
  • 使用超类List&lt;String&gt;作为参数数据类型而不是ArrayList也是一个好习惯
  • 我有另一个类期望 String 来自该方法,我正在处理 GUI ,该方法将字符串返回给我的另一个类,该类使用文本框构建接口然后我对它们进行排序等。因此我需要将方法本身与方法签名保持一致。
猜你喜欢
  • 2021-02-03
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 2016-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-23
相关资源
最近更新 更多