当前位置: 首页 > 知识库问答 >
问题:

如何为我的toString方法将字符串数组转换为字符串

锺离正祥
2023-03-14

这是我的toString方法。

public String toString() {
   Life game = new Life(grid);
   String word;
       for (int row = 0; row < grid.length; row++) {
           for (int col = 0; col < grid[0].length; col++) {
               System.out.print("[" + grid[row][col] + "]");  
           }
           System.out.println();
       }
   word = "";
   return word;
}

我正在尝试获取(“[”网格[行][列]“])”;放入我的字符串中。这是为了创建一个生命网格游戏,我不知道如何将数组放入字符串表示中。

如果所有的细胞都死了,它应该是什么样子的一些样本`

[0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0]
[0][0][0][0][0][0][0][0][0][0]

当我尝试word=word"["网格[行][] "]"; 我得到...

[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]...

一切都在一条直线上。


共有2个答案

左丘繁
2023-03-14

考虑使用Java8的StringJoiner

public String toString() {
    StringJoiner iJoiner = new StringJoiner(System.getProperty("line.separator"));

    for (int i = 0 ; i < grid.length ; i++) {
        StringJoiner jJoiner = new StringJoiner("][", "[", "]");
        for (int j = 0 ; j < grid[i].length ; j++) {
            jJoiner.add("" + grid[i][j]);
        }
        iJoiner.add(jJoiner.toString());
    }
    return iJoiner.toString();
}

StringJoiner在元素之间(而不是之前或之后)放置分隔符,并可以选择添加前缀或后缀。

值得一看的是来源,因为它实现这一目标的优雅方式。

您还可以使用收集器以面向流的方式执行此操作。joining()——这是一个简单的收集器,围绕StringJoiner实现:

 return Arrays.stream(grid)
     .map(row ->
         Arrays.stream(row)
             .mapToObj( x -> ""+x )
             .collect(Collectors.joining("][", "[", "]"))
     .collect(Collectors.joining(lineSeparator));
  • 生成

潘意
2023-03-14

你在这里处理两个问题:

  • 将输出收集到字符串中——这可以通过StringBuilder类和

最终结果应如下:

StringBuilder res = new StringBuilder();
String newline = System.getProperty("line.separator");
for (int row = 0 ; row < grid.length ; row++) {
    for (int col = 0 ; col < grid[row].length ; col++) {
        res.append('[');
        res.append(grid[row][col]);
        res.append(']');
    }
    // Do not append the trailing newline
    if (row != grid.length-1) {
        res.append(newline);
    }
}
return res.toString();
 类似资料:
  • 我正在使用Schembuf在带有套接字的计算机之间更改数据。要传输数据,我使用以下内容: 然而,我注意到Protobuf无法读取任何非int类型的接收数据(它将其分配给0)。果不其然,如果我不使用套接字,但试图用相同的代码片段返回消息,则会发生相同的情况: 我还指出: 那么,为什么我不能正确地将数据转换回字符串呢?如果这是一个参考问题,为什么protobuf不能读取字符数组数据或从字符数组转换的字

  • 我正在尝试使用方法,但我认为我这样做是错误的: http://docs.oracle.com/javase/1.5.0/docs/api/java/util/arrays.html#toString(int[]) 我的代码: 字符串表示形式由方括号(“[]”)中包含的数组元素列表组成。相邻元素由字符“,”(逗号后跟空格)分隔。

  • 我得到一个错误读数:

  • 我有一个购物车php页面,在那里我显示客户端产品。在同一页中,我有一个表单,可以将客户的个人详细信息(如姓名、姓氏等)以及产品信息(如产品名称、数量等)直接发送到我的电子邮件地址。 现在,问题是,当我发送表单时,在我的电子邮件地址上,我收到了所有的信息,但没有产品细节,例如在订单电子邮件中的产品名称字段,我有ARRAY。 我看到将数组转换为字符串时出现问题,但我不知道如何转换,我尝试了几个示例,但

  • 问题内容: 我知道如何以编程方式执行此操作,但是我敢肯定有一种内置方法… 我使用的每种语言都有一组对象的默认文本表示形式,当您尝试将Array与字符串连接起来或将其传递给print()函数时,它会吐出。Apple的Swift语言是否可以有一种轻松地将数组转换为字符串的内置方法,还是在对数组进行字符串化时始终必须明确? 问题答案: 如果数组包含字符串,则可以使用的方法: 在 Swift 2中 : 如

  • 我使用过的每种语言都有某种默认的文本表示,用于对象集合,当您试图将数组与字符串连接起来,或者将其传递给print()函数等时,它会吐出这些对象集合。苹果的Swift语言是否有一种内置的方式可以轻松地将数组转换为字符串,或者我们在字符串化数组时总是必须显式地表示吗?