2011-10-16 34 views
16

私は操作した2次元配列[20] [20]を持っています。いくつかの言葉で私はpen up = 0やpen down = 1のようなユーザ入力命令を持つカメプロジェクトを行っている。ペンが個々の配列位置を下っているとき、例えば[3] [4]は "1" 。Javaの2次元配列の印刷

私のプログラムの最後のステップは、20/20アレイをプリントアウトすることです。

私はそれを印刷する方法を見つけ出すことができないと私は、「X」と「1」を交換する必要が

printコマンドは、実際には親プログラムが呼び出すことをクラス内のメソッドです。..私はループを使用する必要があることを知っている...任意の助けをいただければ幸いです。

public void printGrid() 
     { 
      System.out.println... 
     } 

答えて

24
public void printGrid() 
{ 
    for(int i = 0; i < 20; i++) 
    { 
     for(int j = 0; j < 20; j++) 
     { 
     System.out.printf("%5d ", a[i][j]); 
     } 
     System.out.println(); 
    } 
} 

そして

public void replaceGrid() 
{ 
    for (int i = 0; i < 20; i++) 
    { 
     for (int j = 0; j < 20; j++) 
     { 
     if (a[i][j] == 1) 
      a[i][j] = x; 
     } 
    } 
} 

を置き換えるために、そして、あなたはすべて一度にこれを行うことができます:私は別の質問

public class Snippet { 
    public static void main(String[] args) { 
     int [][]lst = new int[10][10]; 

     for (int[] arr : lst) { 
      System.out.println(Arrays.toString(arr)); 
     } 
    } 

} 
+0

printGridメソッドの内部を置き換えることはできますか? – user997462

+0

その中に 'if'を追加してください。 – COD3BOY

+0

更新を参照してください...... – COD3BOY

1

あなたは

for ...row index... 
    for ...column index... 
    print 

のような構造を持つ行と、その後の列によってループ必要がありますが、私は、これはちょうどそれを自分で試してみるので、宿題だと思います。

forループの行/列のインデックスを入れ替える必要があるかどうかによって異なります。

+0

1をxと置き換えるにはどうすればよいですか?私は40歳のITプロ(ネットワーキング)で、常にプログラミングによって興味をそそられ、何か新しいことを学びました。 – user997462

+0

'print'(a [i] [j] == 1? 'X': '')のようなもので、ループの内側の文字をチェックし、 '1'の場合はそれを置き換えます。 – Jack

+0

@Jack; ' –

18

何かさて、 'X'は文字でintではないので、あなたは行動できませんuallyマトリックス自体でそれを置き換えることはあなたがユーティリティmettodを使用することができます。1.

public void printGrid(int[][] in){ 
    for(int i = 0; i < 20; i++){ 
     for(int j = 0; j < 20; j++){ 
      if(in[i][j] == 1) 
       System.out.print('X' + "\t"); 
      else 
       System.out.print(in[i][j] + "\t"); 
     } 
     System.out.print("\n"); 
    } 
} 
1

に答えて、このような

public void printAndReplaceGrid() 
{ 
    for(int i = 0; i < 20; i++) 
    { 
     for(int j = 0; j < 20; j++) 
     { 
     if (a[i][j] == 1) 
      a[i][j] = x; 
     System.out.printf("%5d ", a[i][j]); 
     } 
     System.out.println(); 
    } 
} 
+0

これを20×20グリッドで印刷するにはどうすればよいですか? – user997462

+0

これはうまく印刷されるはずです。それぞれの要素を区切るために、各print文の末尾にタブ文字( "\ t"または任意の文字、好み)を追加することができます。 – Wyatt915

27

出くわすたび、しかし、次のコード「x」の文字を印刷する必要があります。 Arrays.deeptoString();

public static void main(String[] args) { 
    int twoD[][] = new int[4][]; 
    twoD[0] = new int[1]; 
    twoD[1] = new int[2]; 
    twoD[2] = new int[3]; 
    twoD[3] = new int[4]; 

    System.out.println(Arrays.deepToString(twoD)); 

} 
+1

'配列。deepToString'は2次元配列を出力しますが、1行にしか表示されません。 –

0

あなたは行列のmaxValueのを(要素の別の反復が問題でない場合は簡単に行うことができます)知っていれば、私は次のコードは、より効果的かつ汎用的な見つけます。

int numDigits = (int) Math.log10(maxValue) + 1; 
    if (numDigits <= 1) { 
     numDigits = 2; 
    } 
    StringBuffer buf = new StringBuffer(); 
    for (int i = 0; i < matrix.length; i++) { 
     int[] row = matrix[i]; 
     for (int j = 0; j < row.length; j++) { 
      int block = row[j]; 
      buf.append(String.format("%" + numDigits + "d", block)); 
      if (j >= row.length - 1) { 
       buf.append("\n"); 
      } 
     } 
    } 
    return buf.toString(); 
1

どうすればよいですか?

public static void main (String [] args) 
{ 
    int [] [] listTwo = new int [5][5]; 
    // 2 Dimensional array 
    int x = 0; 
    int y = 0; 
    while (x < 5) { 
     listTwo[x][y] = (int)(Math.random()*10); 

     while (y <5){ 
      listTwo [x] [y] = (int)(Math.random()*10); 
      System.out.print(listTwo[x][y]+" | "); 
      y++;     
     } 
     System.out.println(""); 
     y=0; 
     x++; 
    } 
}