【问题标题】:print an array list in a list format in java w/o a loop在没有循环的java中以列表格式打印数组列表
【发布时间】:2017-03-12 20:13:17
【问题描述】:

我正在尝试重新定义 toString() 方法,它必须返回一个字符串,以打印一个名为 Card 类型为 Card 的数组列表。因为 toString() 必须返回一个字符串,所以我不能使用循环逐个打印出每个元素,但我想以列表格式打印数组列表。基本上,有谁知道如何让 toString() 在不使用循环的情况下将数组列表卡片作为字符串返回?

卡片数组列表定义

    ArrayList <Card> cards = new ArrayList<Card>();

卡片类创建者

    Card card1 = new Card(String suit, String rank, int value);

toString 方法

    public String deckToString(){
        return cards;
    }

应该打印什么

[suit, rank, value]
[suit, rank, value]
[suit, rank, value]
[suit, rank, value]
 etc.

当前打印的内容

[suit, rank, value] [suit, rank, value] etc.

【问题讨论】:

  • “因为 toString() 必须返回一个字符串,所以我不能使用循环,”嗯?为什么你认为不能在返回字符串的方法中使用循环?

标签: java arrays arraylist printing


【解决方案1】:

如果我理解正确, 您希望每个值都在自己的行上。 换句话说,通过换行符而不是逗号来连接值。

public String deckToString() {
    return String.join("\n", cards.stream().map(Card::toString).collect(Collectors.toList()));
}

【讨论】:

  • 这很好用,谢谢!您能否详细说明这是在做什么?只是好奇。
  • 当然。它通过使用它们的toString 方法映射每个卡片,将卡片列表转换为字符串列表。最后,它通过\n 连接所有字符串。
【解决方案2】:
  public String deckToString(){
            temp="";
            for (int i = 0;i<cards.length;i++){
                  temp+=cards.get(i)+"\n";
            return temp;
  }

这只是遍历卡片并为每张卡片添加一个换行符并将其添加到返回字符串中。这类似于 janos 解决方案,但在视觉上更简单。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多