|
2012/10/09(Tue) 00:59:36 編集(投稿者)
■No63770 (NattoRC さん) に返信 > >System.out.printf(String.format("%%2d | %%%dd … %%d\n", n), > >2, 123, 456); > > の場合出力結果は > 「2 | 123 … 456」となります。はじめに明示しておくべきでしたね。
二つの実行結果を分けて考えてください。 私が書いたのは「String.format("%%2d | %%%dd … %%d\n", n)の戻り値であり、「System.out.printf」の出力ではありません。 普通の printf は System.out.printf("%d", n) であり、String.format が入ってきませんよね?なぜ、String.format が入っているのかを考えてみてください。
String.format の戻り値を変数に入れてその変数をデバッガで見るか、System.out.printf("%s", String.format("%%2d | %%%dd … %%d\n", n)); のように String.format の内容を画面に出力してみてください。 そうすれば、私が書いたことと同じような結果になるでしょう。
何に文字列を渡しているか、何から文字列を受け取っているかがポイントです。 printf に直接 "%%2d | %%%dd … %%d\n" を渡しているわけではないのに、実行結果と比較しているので訳がわからなくなります。
// これを読めないと言うことは、誰かが書いたコードを読んでいる? // それとも、課題を解き明かすのが目的? 課題だったのであれば、自力で解かなかった分、後で後悔するかもしれません。
|