- ベストアンサー
なぜ+1するのでしょう?
こんにちは。 下記のサイトでプログラムの練習をしてるのですが、 http://codezine.jp/careerup/article/aid/1495.aspx?p=2 ↓のコードでなぜ最後に+1をする必要があるのかが分かりません。 int month = cal.get(Calendar.MONTH) + 1; どうかアドバイスをよろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
先ほどの、回答者ですが、少し訂正を 基本的には、そのような仕様ですが どうやら、このcal.getの場合は MONTHにかぎり、0~11で、他は普通の値を返すようですね。
その他の回答 (2)
- sakusaker7
- ベストアンサー率62% (800/1280)
現在の日本では、一月、二月、三月、…と 数字+月で表しますが、たとえば英語では 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になっているというわけです。
お礼
詳しいご説明ありがとうございました! 大変参考になりました!
- gigamaiden
- ベストアンサー率33% (11/33)
これは、コンピュータ(というか言語の仕組み)と人間の数のかぞえ方の違いです。 人間は、1,2,3,4・・・と数えますが 多くのプログラム言語では、0,1,2,3・・・とし 0から使い始めます。 つまり上記の cal.get(Calendar.MONTH)で得られる月は もし1月なら0、10月なら9になります。 そこで、+1をするわけです。
お礼
ありがとうございました! とても助かりました!