2016-05-08 7 views
3

文字列が与えられ、2D配列に変換されました。2次元配列行列の書式付き文字列を隣り合わせに印刷する方法

public String[][] str2arr(String str) 
{ 
    String[] rows = str.split("(?<=\\G....)"); // split the string at every 4th character 
    String[][] matrix = new String[rows.length][]; 
    int r = 0; 
    for (String row : rows) 
    { 
     matrix[r++] = row.split("(?<=\\G.)"); // split each of the string of each row 
    } 
    return matrix; 
} 

このコードは[[*, 2, 3, *], [*, 2, 3, 4], [1, 2, 3, 4], [1, _, 3, *]]

のような結果を与え、私はそれが

にフォーマットがあります。与えられた 文字列が *23**23412341_3*

私は2次元配列に変換するために書いたコードがありました

*23* 
*234 
1234 
1_3* 

このコードを使用して:

public void printMatrix(String[][] x) 
{ 
    for (int i=0; i < x.length; i++) 
    { 
     for (int j=0; j<x[0].length; j++) 
     { 
      System.out.print(x[i][j] + ""); 
     } 
     System.out.print("\n"); 
    } 
} 

しかし、今では2番目の文字列が与えられていて、それを行列の右側(右側)に表示する必要がありますが、最初の行列の最後には表示しないでください。

*23* *23* 
*234 *234 
1234 1234 
1_3* 1_3* 

これは可能ですか?そうでない場合は、どうすればいいですか?このコードを更新して目標を達成できるようにします。

答えて

1

あなたが求めることはできません。しかし、代わりに両方の行列を並べて印刷することもできます。

すべての行列を保持するクラスを作成します。これは、すべての行列は、同じ寸法を有していると仮定します。ここでは

public class MatrixHolder { 
    private List<String[][]> matrices = new ArrayList<>(); 

    public void addMatrix(String[][] matrix) { 
     matrices.add(matrix); 
    } 

    public void printMatirces() { 
     for(int i = 0; i < matrices.get(0).length; i++) { 
      for(int j = 0; j < matrices.size(); j++) { 
       System.out.print(rowString(matrices.get(j)[i]) + " "); 
      } 
      System.out.println(); 
     } 
    } 

    private static String rowString(String[] row) { 
     StringBuilder sb = new StringBuilder(); 
     for(String s : row) 
      sb.append(s); 
     return sb.toString(); 
    } 
} 

はそれを使用する方法の例です:

String input = "*23**23412341_3*"; 

MatrixHolder mh = new MatrixHolder(); 
mh.addMatrix(str2arr(input)); 

mh.printMatirces(); 
System.out.println(); 

mh.addMatrix(str2arr(input)); 

mh.printMatirces(); 

出力:

*23* 
*234 
1234 
1_3* 

*23* *23* 
*234 *234 
1234 1234 
1_3* 1_3* 
+0

ブリリアント。これにより、2つの行列だけでなくそれ以上のものが可能になり、プログラムのスケーラビリティに必要なものが得られます。乾杯! – allanae

0

String [] [] xをバインドして、バインドされたxesを表示できます。

public String[][] cbind(String[][] x1, String[][] x2) { 


     String[][] output = new String[x1.length][x2[0].length +x2[0].length]; 

     for (int i = 0; i < x1.length; i++) { 

      for (int j = 0; j < x1[0].length; j++) { 

       output[i][j] = x1[i][j]; 

      } 

      for (int j = 0; j < x2[0].length; j++) { 

       output[i][j + x1[0].length] = x2[i][j]; 
      } 

     } 

     return output; 
    } 
関連する問題