我知道如何为一维字符串数组执行toString
方法,但如何打印二维数组?用1D我这样做:
public String toString() {
StringBuffer result = new StringBuffer();
res = this.magnitude;
String separator = "";
if (res.length > 0) {
result.append(res[0]);
for (int i=1; i<res.length; i++) {
result.append(separator);
result.append(res[i]);
}
}
return result.toString();
如何打印2D数组?
答案 0 :(得分:60)
Arrays类定义了几个有用的方法
String[][] aastr = {{"hello", "world"},{"Goodbye", "planet"}};
System.out.println(Arrays.deepToString(aastr));
给出
[[hello, world], [Goodbye, planet]]
答案 1 :(得分:6)
你只需要对元素进行两次迭代:
StringBuffer results = new StringBuffer();
String separator = ","
float[][] values = new float[50][50];
// init values
for (int i = 0; i < values.length; ++i)
{
result.append('[');
for (int j = 0; j < values[i].length; ++j)
if (j > 0)
result.append(values[i][j]);
else
result.append(values[i][j]).append(separator);
result.append(']');
}
重要提示: StringBuffer
也很有用,因为您可以链接操作,例如:buffer.append(..).append(..).append(..)
,因为它返回对self的引用!可用时使用synctactic糖..
重要2:因为在这种情况下你打算在StringBuffer
附加很多东西,估计在附加过程中避免多次分配和重新定位阵列的能力是好的,你可以做它计算多维数组的大小乘以您计划追加的元素的平均字符长度。
答案 2 :(得分:1)
public static <T> String to2DString(T[][] x) {
final String vSep = "\n";
final String hSep = ", ";
final StringBuilder sb = new StringBuilder();
if(x != null)
for(int i = 0; i < x.length; i++) {
final T[] a = x[i];
if(i > 0) {
sb.append(vSep);
}
if(a != null)
for(int j = 0; j < a.length; j++) {
final T b = a[j];
if(j > 0) {
sb.append(hSep);
}
sb.append(b);
}
}
return sb.toString();
}
答案 3 :(得分:0)
两个for
循环:
for (int i=1; i<res.length; i++) {
for (int j=1; j<res[i].length; j++) {
result.append(separator);
result.append(res[i][j]);
}
}
答案 4 :(得分:0)
public static void main(String[] args) {
String array [] [] = {
{"*","*", "*", "*", "*", "*"},
{"*"},
{"*"},
{"*"},
{"*","*", "*", "*", "*", "*"},
{"*"},
{"*"},
{"*"},
{"*"},
{"*"}};
for (int row=0; row<array.length;row++) {
for (int column = 0; column < array[row].length; column++) {
System.out.print(array[row][column]);
}
System.out.println();
}
}