web-dev-qa-db-ja.com

文字列の2次元配列を文字列として出力する方法

文字列の1次元配列に対してtoStringメソッドを実行する方法を知っていますが、2次元配列を出力するにはどうすればよいですか? 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配列を印刷するにはどうすればよいですか?

17
sasklacz

要素を2回繰り返すだけです。

_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(..)は、自己への参照を返すためです。可能な場合は同期糖を使用してください。

IMPORTANT2:この場合、StringBufferに多くのものを追加する予定なので、追加中に配列を何度も割り当てたり再配置したりしないように容量を見積もるとよいので、計算して行うことができます。多次元配列のサイズに、追加する予定の要素の平均文字長を掛けたもの。

6
Jack

Arrays クラスは、いくつかの便利なメソッドを定義します

  • 配列. toString -ネストされた配列では機能しません
  • 配列. deepToString -これはまさにあなたが望むことをします

String[][] aastr = {{"hello", "world"},{"Goodbye", "planet"}};
System.out.println(Arrays.deepToString(aastr));

与える

  [[hello, world], [Goodbye, planet]]
61
Robert Christie
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();
}
1
Pindatjuh
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();
    }
}
0
Sil

2つの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]);
    }
}
0
Felix Kling