这是我的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;
}
我想要("[" + grid[row][col] + "]")
;进入我的String
字。这是为了创建一个生命网格游戏,我无法弄清楚如何将数组放入字符串表示。
如果所有细胞死亡,它应该是什么样子。 `
[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 +“[”+ grid [row] [col] +“]”;我明白了......
[0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0][0]...
一切都在一条直线上。
答案 0 :(得分:3)
您在这里处理两个问题:
String
- 可以使用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();
答案 1 :(得分:0)
考虑使用Java 8&#39; 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
在(但不是之前或之后)元素之间放置分隔符,并可选择添加前缀或后缀。
值得关注source,以实现这一目标的优雅方式。
您也可以使用Collectors.joining()
以面向流的方式执行此操作 - 这是在Collector
周围实施的简单StringJoiner
:
return Arrays.stream(grid)
.map(row ->
Arrays.stream(row)
.mapToObj( x -> ""+x )
.collect(Collectors.joining("][", "[", "]"))
.collect(Collectors.joining(lineSeparator));
Stream<int[]>
int[][]
map()
处理每个int[]
:
int[]
变为IntStream
mapToObj
将IntStream
加入Stream<String>
,并为该行的每个单元格添加一个项目Stream<String>
收集到格式化的行字符串"[1][2][3]"
map()
会返回Stream<String>
Stream<String>
收集到一个换行符分隔的字符串