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

时间:2010-03-07 19:13:32

标签: java string multidimensional-array

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

5 个答案:

答案 0 :(得分:60)

Arrays类定义了几个有用的方法

  • Arrays。toString - 这对嵌套数组不起作用
  • 阵列。deepToString - 完全符合您的要求

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();
    }
}