通算日のプログラムを配列を使って書いてみましょう.
class YearDay2 { public static void main(String argv[ ]) { int c[ ]={0,31,28,31,30,31,30,31,31,30,31,30,31}; int n=210; int m, p; m=1; p=0; while(n > p+c[m]){ p=p+c[m]; m=m+1; } System.out.println(n + "=" + m + "月" + (n-p) + "日"); } }
目的とする日数(n)を越す直前まで月(m)と累積日(p)とを増やす格好になっています.最初のifを12個並べたものとは格段にスマートでわかりやすいものになりました.なおここでは,配列cのサイズは(12ではなく)13としてあります.k月の日数をc[k]で表わしたいからです.c[12]が使えるためには,サイズ13(以上)である必要があります.c[0]は使用しないことになります.結果を示します.
210=7月29日
このプログラムは一応動くのですが,nの初期値(ここでは210)によっては異常終了してしまうことがあります.なぜでしょうか.
26.1.6.6 配列定義 | 26.1.6.7 配列の使用 | 26.1.6.8 配列と反復 | ||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Thu, 02 Sep 2004 18:49:16 JST (1793d) |