对于我必须编写的程序,我需要将一个由一位数组成的二维数组转换为一个由空格分隔的数字字符串。系统为我提供了一个测试代码,当我运行它时,我的代码未能通过两个arrayToString测试。我找不到我的逻辑错误在哪里。谁来帮帮忙!
public static String arrayToString(int[][] a) {
String aString;
aString = "";
int column;
int row;
for (row = 0; row < a.length; row++) {
for (column = 0; column < a[0].length; column++ ) {
aString = aString + " " + a[row][column];
}
aString = aString + "\n";
}
return aString;
}
发布于 2013-11-18 04:44:40
int[][] a = new int[][]{{1,2,3},{4,5,6},{7,8,9}};
public static String arrayToString(int[][] a) {
String aString;
aString = "";
int column;
int row;
for (row = 0; row < a.length; row++) {
for (column = 0; column < a[0].length; column++ ) {
aString = aString + " " + a[row][column];
}
aString = aString + "\n";
}
return aString;
}
输出:
1 2 3
4 5 6
7 8 9
如果您跳过此行aString = aString + "\n";
,您的输出将如下所示
1 2 3 4 5 6 7 8 9
发布于 2018-04-13 16:41:16
@dawood ibn-kareem很好地解释了测试失败的可能原因。
有了Java 8 Stream,做你想做的事情就很容易了!
输入:[1,2,3,3,4,5,5,6,7]
public static String arrayToString(int[][] a) {
return Arrays.stream(a)
.map(s -> Arrays.stream(s)
.mapToObj(String::valueOf)
.collect(Collectors.joining(" "))
)
.collect(Collectors.joining("\n"));
}
输出:
1 2 3
3 4 5
5 6 7
其他方法,用于分隔2D数组的每一行,而不使用回车符
public static String arrayToString(int[][] a) {
return Arrays.stream(a)
.flatMapToInt(Arrays::stream)
.mapToObj(String::valueOf)
.collect(Collectors.joining(" "));
}
输出
1 2 3 3 4 5 5 6 7
玩得开心!
发布于 2013-11-18 04:30:00
你的代码基本上没问题,只是你在每一行的开头加了一个前导空格。要在返回前清理它们,请添加以下行:
aString = aString.replaceAll("(?m)^ ", "");
这将使用regex删除(通过用空格替换)行开头的所有空格。正则表达式标志(?m)
使^
匹配输入的每一行的开头(通常^
只匹配输入的开头)。
https://stackoverflow.com/questions/20035669
复制相似问题