配列データを処理するほとんどの場合は繰返しの形式を使います.データ自身が「繰返し」構造をしているからです.したがって,繰返し形式の場合の注意点がこの場合にも適要されます.それは,繰返しが終了することの確認です.
このプログラムでの繰返しは
while(n > p+c[m]){ p=p+c[m]; m=m+1; }
という部分です.whileの条件の中では,nは初期値のまま,pとmは変化(増加)してゆきます.したがってこの繰返しが正常な範囲である1 <=m <=12で終了するためには,1 <= n <= 365である必要があります.
試しにn=1000としてこのプログラムを実行させてみると,m=12でも繰返しが終了せず,mは13になり
存在しない要素c[13]を指定してエラーになる
ことになります. これを防ぐためにはwhileの条件を
m < c.length && n > p+c[m]
と変更します. さらに,m=13になったということは「変なデータ」だったわけですから,その旨の表示も必要です. 一般に配列aの上限チェックはi &< a.lengthであり,<= ではないことに注意しましょう.
26.1.6.7 配列の使用 | 26.1.6.8 配列と反復 | 26.1.6.9 通算日 | ||
2009年度版に向けて現在作業中です.
このページに関してお気づきの点がありましたら
コメント投稿システムまでお願いします.
|
Thu, 08 Apr 2004 17:13:51 JST (1940d) |