• ベストアンサー

なぜ+1するのでしょう?

こんにちは。 下記のサイトでプログラムの練習をしてるのですが、 http://codezine.jp/careerup/article/aid/1495.aspx?p=2 ↓のコードでなぜ最後に+1をする必要があるのかが分かりません。 int month = cal.get(Calendar.MONTH) + 1; どうかアドバイスをよろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

先ほどの、回答者ですが、少し訂正を 基本的には、そのような仕様ですが どうやら、このcal.getの場合は MONTHにかぎり、0~11で、他は普通の値を返すようですね。

renounce
質問者

お礼

ありがとうございました! とても助かりました!

その他の回答 (2)

  • sakusaker7
  • ベストアンサー率62% (800/1280)
回答No.3

現在の日本では、一月、二月、三月、…と 数字+月で表しますが、たとえば英語では January, Feburuary, March, ... ってなりますよね。 で、そういった名前を文字列として持つとします。 そうすると month_name_table = { "January", "Feburary", "March", ... "November", "Decemnber" }; って感じになります。 そしてそれぞれの「添え字」に注目すると January(「1」月)→0 Feburary(「2」月)→1 March(「3」月)→2 と、月の順序よりひとつ少ない数字になります。 CとかJavaでは配列の添え字は0始まりですので、 処理がしやすいように月を表す数字が 0 ~11になっているというわけです。

renounce
質問者

お礼

詳しいご説明ありがとうございました! 大変参考になりました!

回答No.1

これは、コンピュータ(というか言語の仕組み)と人間の数のかぞえ方の違いです。 人間は、1,2,3,4・・・と数えますが 多くのプログラム言語では、0,1,2,3・・・とし 0から使い始めます。 つまり上記の cal.get(Calendar.MONTH)で得られる月は もし1月なら0、10月なら9になります。 そこで、+1をするわけです。

関連するQ&A