1

printf()ステートメントを使用して出力をグリッド化しようとしています。

文字列は、2つのforループで繰り返される2D配列を介して生成されます

例:

    String[][] arr =
    {
      {"*", "2", "1", "*", "1"},
      {"*", "2", "1", "*", "1"},
      {"*", "2", "1", "*", "1"},
      {"*", "2", "1", "*", "1"},
      {"*", "2", "1", "*", "1"}
    }

    for(int i = 0; i < arr.length; i++)
    {
       for(int j = 0; j < arr[0].length; j++)
       {
          System.out.printf("%s", arr[i][j]);
       }
    }

基本的に、コードに表示されるとおりの出力(5x5グリッドとして)が必要ですが、フォーマットに関するチュートリアルは簡単に理解できず、ほとんどの場合、この種のフォーマットを扱いません。

理想的には、出力は次のようになります。

    * 2 1 * 1
    * 2 1 * 1
    * 2 1 * 1
    * 2 1 * 1
    * 2 1 * 1

私の質問は、printf()文字を使用してこれをどのように行うか以外に、ネストされたforループ内でこれらを使用して問題が発生するかどうかです。また、%sがどこから来ているのかは理解していますが、それ以上の記号の使用法は私を超えています。誰かがなぜ彼らがこれに使用している記号と文字を使用するのか説明できますか?

どうもありがとうございます。

4

4 に答える 4

2

次の行を改行で印刷するにはSystem.out.println();、終了後にを追加する必要があります。-inner loop

for(int i = 0; i < arr.length; i++)
{
   for(int j = 0; j < arr[0].length; j++)
   {
      System.out.printf("%s ", arr[i][j]);
   }
   System.out.println();
}

さまざまな詳細については、次のformat specifierリンクを参照してください。

于 2012-11-05T17:57:55.873 に答える
0

Javaでのprintf()タイプのリファレンス:http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html

コード:

    for(int i = 0; i < arr.length; i++) {
       for(int j = 0; j < arr[0].length; j++) {
        //System.out.printf("%s", arr[i][j]);
          System.out.printf("%s ", arr[i][j]);
        //The added space will pad the end after each character
       }
       System.out.println();
       //After each pass printing all the characters of your array,
       //this will add a line return.
    }
于 2012-11-05T18:01:20.463 に答える
0
String[][] arr =
    {
      {"*", "2", "1", "*", "1"},
      {"*", "2", "1", "*", "1"},
      {"*", "2", "1", "*", "1"},
      {"*", "2", "1", "*", "1"},
      {"*", "2", "1", "*", "1"}
    }

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

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

         System.out.printf("%s ", arr[i][j]);

   }

     System.out.prinln();

}
于 2012-11-05T18:01:40.713 に答える
0

Java 8がリリースされたので、次を使用できます。

System.out.printf("%s", Grid.print(width, height, this::showCell));

これを別のフォーマッタ関数として追加する必要があります。

public String showCell(Integer x, Integer y) {
    return arr[x][y];
}
于 2017-07-16T21:49:38.437 に答える