2017-11-14 17 views
3

私はjavaを使用しています。ユーザ入力に基づいて2次元配列を水平方向に複数回印刷したいと思います。しかし、私の配列は縦に印刷されます。2次元配列を水平方向に何度も印刷する方法

n=3; //user input 
    char[][] board = new char[2][3]; 
    char[][] f = new char[board.length][n * board[0].length]; 
    for (int i = 1; i < n + 1; i++) { 
     int Start = (i * board[0].length) - board[0].length; 
     int End = i * board[0].length; 
     for (int row = 0; row < f.length; row++) { 
      for (int col = nStart; col < nEnd; col++) { 
       f[row][col] = board[row][col - nStart]; 
       System.out.print(f[row][col]); 
      } 
      System.out.println(); 
     } 
    } 
For example board array = 
xx 
xx 
I would like 
xxxxxx 
xxxxxx 
+0

'System.out.println();'を削除しますか? – Eran

+0

'System.out.println()'を 'System.out.print(" ")'で置き換えます。それ以外の場合は削除してください。 –

+0

あなたの出力がどのように見えるかの例を(あなたの投稿内に)表示してください。 – DevilsHnd

答えて

1

あなたが水平に2次元配列を印刷したい場合は、あなたがn回次の行の前に印刷行を繰り返す必要があります。

int n = 3; // user input 
char[][] board = new char[][] { { 'x', 'x', 'x' }, { '0', '0', '0' } }; //example board 

for (int row = 0; row < board.length; row++) 
{ 
    for (int i = 0; i < n; i++) 
    { 
     for (int col = 0; col < board[row].length; col++) 
     { 
      System.out.print(board[row][col]); 
     } 
     System.out.print("\t"); //arrays separated by tab 
    } 
    System.out.println(); 
} 

が出力:

xxx xxx xxx 
000 000 000 

私はこのヘルプを願っています。

+0

"\ t"を取り除きました。どうもありがとう。 – ivor

0

解決策は、コードの最後の行に少し間違いがあることを除いて、問題なく機能します。 System.out.println()しかし、printlnを使用して、すべてのエントリ間にスペースを印刷したいと思います。最後に改行が印刷されます。

n=3; //user input 
char[][] board = new char[2][3]; 
char[][] f = new char[board.length][n * board[0].length]; 
for (int i = 1; i < n + 1; i++) { 
    int Start = (i * board[0].length) - board[0].length; 
    int End = i * board[0].length; 
    for (int row = 0; row < f.length; row++) { 
     for (int col = nStart; col < nEnd; col++) { 
      f[row][col] = board[row][col - nStart]; 
      System.out.print(f[row][col]); 
     } 
     System.out.print(" "); // Print a space between every single output 
    } 
} 

それとも、スペースをwan'tいけない場合、すべて完全に行を削除:だからあなたのコードは次のようになります。または、スペースをカンマ、ポイントなど必要なものに変更します。

+1

助けてくれてありがとう – ivor

0

コピーされた配列の削除f。 あなたが必要とするのは、ループ内で行、列を交換することです。

n=3; //user input 
char[][] board = new char[2][3]; 
for (int j = 0; j < board[0].length; j++) { 
    for (int i = 0; i < n ; i++) { 
      System.out.print(board[i][j]); 
      System.out.print(" "); 
    } 
    System.out.println(); 
} 
+0

あなたの助けをたくさんいただきありがとうございます – ivor

関連する問題