将字符串的二维数组打印为String

我知道如何为一维字符串数组做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数组。

你只需要在元素上迭代两次:

 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附加很多东西,估计在附加过程中避免多次分配和重新定位数组的能力是好的,你可以计算多维数组的大小乘以平均字符您计划追加的元素的长度。

Arrays类定义了一些有用的方法

  • arrays。 toString – 对嵌套数组不起作用
  • arrays。 deepToString – 它完全符合你的要求
 String[][] aastr = {{"hello", "world"},{"Goodbye", "planet"}}; System.out.println(Arrays.deepToString(aastr)); 

  [[hello, world], [Goodbye, planet]] 
 public static  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(); } 

两个for循环:

 for (int i=1; i