TODOS・何でも情報交換TOPから是非ご覧ください。
一番下の投稿フォームへ > スレッド一覧 > 記事閲覧
o6asanさんのJAVAトライ・その7
日時: 2013/09/26 06:37
名前: りり

o6asanさん、1日一つでなくても、お忙しいときは、そのままにしておいてくださいね。
JAVAの習い始めに、こんな演習問題やっているのねーという興味と、皆様が特に若い方がトライしてみようという気持ちになると良いなと思っています。

今、面倒くさがって考えるのを止めてしまう傾向もありますよね。

昔、アスペ傾向の…中学生か高校生位だったかな…
アクセサリーで付いてくるマインスイーパ、「おもしろいよ」と奨めて、彼がトライしているのを見ていたんだけど、一定の法則が有り、それを推測していけば良いのに、面倒くさいと一切そういうことしなくてね。
でたらめにガンガンクリックしていって、あっという間に地雷踏んで終わり。彼は一応4年生の大学まで出たんだけど、ちゃんと学習したんだかどうだか…

小学生でも、HTMLにJavaScriptを組み込んだクイズを紹介して、ここのクイズ文を入れ替えれば、自分の問題ができるよと教えたら、結構おもしろがって…うっかり必要な記号を消したり全角を入れちゃったりしたら、エラーになるんだけど、それも「バグった、バグった」と喜んで、「ゲームって、やるより作る方が面白いね」と言ってくれたことがあります。多分、年齢じゃ無いんだな…追求力というか知的好奇心旺盛な子は、本当に小さいときからそうなんだと思います。

JAVAは、小学生じゃ無理でしょうけど、与えられたゲームの範疇にとどまるのでは無く、創造的な遊びを楽しむということは、老若男女、皆さん楽しまれると良いと思います。
それにね、もしかしたら、これからは高齢化社会だから、脳の衰えを阻止するのに、考える遊びは良いと思うんですよね。


あっと、ここで問題文。
これも、打ち間違えか添付コードがおかしいという指摘があったので、問題自体に問題があるかもしれませんが。


ここも、for文のネストのやり方という要請

平成25年度のカレンダーを作成する。
作成したい月をキーボド入力で指定すると、その月のカレンダーが出力されるコードを作成しなさい。
ただし、ただし以下の情報は既知であるものとする。
・1月1日は火曜日であること
・2月は28日、4.6.9.11月は30日
・1.3.5.7.8..10.12月は31日であること。

<ヒント>
6月のカレンダーを作成するなら、6月1日が何曜日から始まるか知らなくてはなりません。
そのためには、1月1日から5月31日までに何日あったかを計算すればよい。
それを7で割った余りを求めれば、何曜日から始まるかがわかる。
参考までに作成したい月の前の月までの日数sum-daysと、作成したい月の日数daysを求めるコードを以下に記する。

switch(month){
case 1:
case 3:
case 5:
case 7
case 8:
case 10:
case 12:
days=31:
break:
case 2:
days=28:
break:

case 4:
case 6:
case 9:
case 11:
days=30:
break:
}
switch(month){
case 12:
sum-days +=30:
case 11:
sum-days +=31
case 10:
sum-days +=30
case 9
sum-days +=31
case 8:
sum-days +=31

case 7:
sum-days +=30

case 6:
sum-days +=31

case 5:
sum-days +=30

case 4:
sum-days +=31

case 3:
sum-days +=28

case 2:
sum-days +=31

case 1:
sum-days +=0:
}
メンテ

Re: o6asanさんのJAVAトライ・その7 ( No.1 )
日時: 2013/09/26 19:43
名前: o6asan

> 1日一つでなくても、お忙しいときは、そのままにしておいてくださいね。

昨日は,サーバの世話の息抜きになってよかったです。

正直に言うと,1日に1つずつコツコツというのは,苦手です。
自ブログにも書いたことがありますが,興味を持ったときには,のめりこみます。で,ガーッとやって,
そこそこのあたりまで行き着くころには,ボチボチ熱が冷めています。で,また,かなりほとぼりが
冷めたころになって,フッと,同じことに戻ってきたりします。

> ここも、for文のネストのやり方という要請

もう関係ないと思ってます。ヒントのところは,さらに引っかけの様相を帯びてきました。

それはさておき,
今日の問題文で,独自に解釈をしたところ。

1. 「平成25年度」
  なにも注釈なしに年度を使うと,普通には公共機関の会計年度である。学校年度もこれに準じる。
  しかし,「1月1日は火曜日であること」となっている。これは,平成25年の1月1日のことだろう。
  というわけで,4月始まりの平成25年度のカレンダーではなく,1月始まりの平成25年のカレンダーを
 作った。

2. 「前の月までの日数sum-days」関してのコードは,意味があるように思えなかったし,考え方も不要
 部分が多いように思えた。sumというパラメータ名は,合計を出す作業を意味するのだろうが,monthを
 指定して当該月のカレンダーを出すのに,無駄な演算が多い気がする。

 ということで,
  switch(month){
    case 1:sum=0;days=31;break;
    case 2:sum=31;days=28;break;
    case 3:sum=59;days=31;break;
    case 4:sum=90;days=30;break;
    case 5:sum=120;days=31;break;
    case 6:sum=151;days=30;break;
    case 7:sum=181;days=31;break;
    case 8:sum=212;days=31;break;
    case 9:sum=243;days=30;break;
    case 10:sum=273;days=31;break;
    case 11:sum=304;days=30;break;
    case 12:sum=334;days=31;break;
  }
 のようにあっさり行くことにした。

Sample7.javaです。
http://o6asan.com/blog-j/files/JAVA/TODOS/Sample7.txt

今回は,前回の応用問題にあたるというりりさんの一言があったので,Sample6.javaのメイン部分を
メソッドMonth()として流用した。
参) http://ja.wikipedia.org/wiki/%E3%82%B5%E3%83%96%E3%83%AB%E3%83%BC%E3%83%81%E3%83%B3

----------------------------------------------------------------------------------
動作確認は,jdk-7u40-nb-7_3_1-windows-i586.exeでやっています。

一応,動くプログラムは書いていますが,当面は,エラー回避ルーチン抜きで行きます。
また, JAVA の素人ですので,この書き方は JAVA らしくないというのがありましたら,
指摘してください。そこまでマニアックに書くつもりはありませんが,一応, JAVA の
方言にも通じるようにはなりたいと思っていますので。

よろしくお願いします。

この欄に,プログラムを貼ると,インデントが消えてしまいますので,上記のように
ファイルで,アップしています。

実際に,試してみようと思う方は,ダウンロードもできます。
ただし,拡張子をtxtにしてアップしてますので,これをjavaに変更後コンパイルしてください。
メンテ
Re: o6asanさんのJAVAトライ・その7 ( No.2 )
日時: 2013/09/26 20:51
名前: りり

おぉー、なかなかプログラムらしくなってきましたねーーー


では、あと少しで終わりです。質問回数はたくさんあったのだけど、重複が多くて…

この次が別スレッドにあった

(実行結果)
整数を入力してください: 12
演算子(+|-|*|/)を入力してください: +
整数を入力してください: 5
12 + 5 = 17
終了しますか?(y|n): n
整数を入力してください: 20
演算子(+|-|*|/)を入力してください: -
整数を入力してください: 5
20 - 5 = 15
終了しますか?(y|n): n
整数を入力してください: -2
演算子(+|-|*|/)を入力してください: *
整数を入力してください: 3
-2 * 3 = -6
終了しますか?(y|n): n
整数を入力してください: 10
演算子(+|-|*|/)を入力してください: /
整数を入力してください: 3
10 / 3 = 3...1
終了しますか?(y|n): y
終了しました。

の問題と

次のこちらには、回答が書かれなかったけど、すでにo6asanさんが回答を考えられた問題なのですが、順序よくなるようスレッドを立てておきます。
転記いただけると有り難いです。
メンテ
Re: o6asanさんのJAVAトライ・その7 ( No.3 )
日時: 2013/09/30 00:59
名前: りり

実行の動画を紹介します。
http://todos.xsrv.jp/uploader/upl/AGDRec7.wmv

6の発展になりますが、カレンダーの問題は、JAVAの演習に良く出てくるようです。

これをさらに発展させれば、20××年、一年分とか、できるのかな?
メンテ

楽しい交流と情報交換のTODOS・アップローダーも用意。ぜひTOPからもご覧ください。
ご参考になりましたら、お気軽に一筆お書き込みくださいませ。
題名 スレッドをトップへソート
名前
画像添付
JPEG
GIF
PNG



参照ボタンを押して、PCの画像を指定ください。3枚まで指定できます。縮小画像はクリックで拡大されます。
パスワード (好きなパスワードを。投稿後、右下のスパナマークをクリックし、そのパスワードを入れて修正できます。)
コメント

   クッキー保存
スレッドTOPへ***スレッド一覧