Lecture2018
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[Lecture]]
//#contents
*ヒューマンインタフェース 2018年前期 [#xbc26b1a]
**ヒューマンインタフェースのレポート [#fa42ea61]
提出は任意です.もし良いレポートを提出いただけたら出席点...
-締め切り2018年8月31日金曜日
-形式分量:A4, ページ数は1-3ページ程度
-提出先・提出方法:PDFにしてsiio@is.ocha.ac.jpまでメール...
メールの標題は「ヒューマンインタフェースレポート: 16205XX...
提出いただいた方はこのページでお知らせします。提出してし...
(提出を確認出来るよう締め切りより早めに提出していただくこ...
提出状況は、この下に、学籍番号と受理日で案内します。
もし、学籍番号が公表されたくない場合は、確認用の秘密の仮...
学籍番号の代わりにその名前を使います。
|学籍番号|受理日|
|1620415|2018年8月|
|1620504|2018年8月|
|1620515|2018年8月|
|1620520|2018年8月|
|1620525|2018年8月|
|1620535|2018年8月|
|1620537|2018年8月|
|1620542|2018年8月|
|1620560|2018年8月|
(2018年9月2日現在)
***レポートの課題 [#c9d0add0]
-身の回りの携帯機器、家電製品、機械製品、コンピュータソフ...
-そして、それがなぜ使いにくいのかを、 授業で説明した、 制...
-また,自分ならこのように設計して使いやすくするというアイ...
**出席状況 [#te5cda59]
学部「ヒューマンインタフェース」は出席重視の授業です.そ...
|学籍番号|4月12日|4月19日|5月17日|5月24日|5月31日|6月7日|...
|1620415|出|出|欠|出|出|欠|欠|欠|出|出|出|出|出|4不可|
|1620501|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620503|出|出|出|出|出|出|出|出|出|出|出|欠|出|1|
|1620504|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620505|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620506|出|出|出|欠|出|出|出|出|出|出|出|出|出|1|
|1620507|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620508|出|欠|出|出|出|出|出|欠|出|欠|出|出|出|3|
|1620509|出|出|出|出|出|出|出|出|出|出|出|出|欠|1|
|1620510|出|出|出|出|出|出|出|出|欠|出|出|出|出|1|
|1620512|出|出|出|欠|出|出|出|出|出|出|出|出|出|1|
|1620513|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620514|出|出|出|欠|出|出|出|欠|欠|欠|欠|欠|欠|7不可|
|1620515|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620516|出|出|出|出|出|欠|出|出|欠|出|出|出|出|2|
|1620517|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620518|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620519|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620520|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620521|出|出|出|欠|出|出|出|欠|出|出|出|出|出|2|
|1620523|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620524|出|出|出|出|出|出|欠|出|出|出|欠|欠|出|3|
|1620525|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620526|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620527|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620528|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620529|欠|欠|欠|欠|欠|欠|欠|欠|欠|欠|欠|欠|欠|13不可|
|1620532|出|出|出|出|出|欠|出|出|出|出|出|出|出|1|
|1620533|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620534|出|出|出|出|欠|出|出|出|欠|出|出|欠|出|3|
|1620535|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620536|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620537|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620538|欠|欠|欠|出|欠|欠|欠|欠|欠|欠|欠|欠|欠|12不可|
|1620539|出|出|出|出|出|欠|出|出|欠|出|出|出|出|1|
|1620540|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620541|出|出|出|出|出|欠|出|出|出|出|出|欠|出|1|
|1620542|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
** 講義開催予定 [#b3cac191]
-4/12
-4/19
-4/26 休講
-5/10 休講
-5/17
-5/24
-5/31
-6/7
-6/14
-6/21
-6/28
-7/5
-7/12
-7/19
-7/26
-8/2 試験週間のため授業はありません
**宿題 [#c73b3aac]
下のリンク先のソースコードをコンパイルして、応答速度を図...
http://is.ocha.ac.jp/~siio/index.php?CSL11HCI#k497ebbd
**宿題 [#x69779a5]
***GUI黎明期のPC性能を調べてください(2018.4.19) [#ba9db6ff]
-GUI黎明期PCのCPU名、CPUクロック、メモリ容量、画素数を調...
--現在,Windows を使っている人は,最初の Windows が出荷され...
--Mac OS Xを使っている人は,1984に出荷された最初の Macinto...
-今あなたが使っているコンピュータと比較してください.
-次回の授業(5/17)最初に配布するA5サイズの用紙に各自で記入...
//**宿題
//
//***人の反応速度を測定するプログラムを作って測定してくだ...
//-連休明けの授業(5/15)の開始時に、A4, 1枚(両面印刷でも可...
//--用紙の上辺に学籍番号、学年、氏名を1行で書いておいてく...
//-C 言語では,次のようなプログラムで、”hit now”という文字...
//--http://is.ocha.ac.jp/~siio/hci/hitnow.c
//--このプログラムは固定時間(5秒)後にhit nowが表示され...
//-これによりあなたの応答速度を複数回実測して、人の応答速...
//-また個人差や年齢などで結果は変わるかもしれません。周り...
//-また何度も測定することで、習熟して速度が向上したり、そ...
//--そのような現象が観察できたら、これも報告してください...
**教科書 [#ta8dbb5f]
http://ec2.images-amazon.com/images/I/51SsP4P1UiL._SL500_...
http://www.amazon.co.jp/dp/4781912605/
**授業資料 [#s6bf1fc3]
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c1...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c2...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c3...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c4...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c5...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c6...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c7...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c8...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c9...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c1...
(授業開始直前や直後に差し替えされている可能性があります。)
**教科書サポートページ [#b385f64d]
-http://is.ocha.ac.jp/~siio/index.php?CSL11HCI
//**宿題:ボタンを押すたびに点灯/消灯を繰り返す(トグル...
//
//以下は、Arduinoの2ピンに接続された押しボタンスイッチを...
//ちなみにHIGHとLOWはintの値で、int型の変数で保存すること...
//
// int outpin=13; //An LED is connected to ping 13
// int inpin=2; //A switch is connected to pin 2
//
// void setup() {
// // initialize the digital pin as an output and input.
// pinMode(outpin, OUTPUT);
// pinMode(inpin, INPUT);
// }
//
// void loop() {
// if ( digitalRead(inpin) == HIGH) {
// digitalWrite(outpin, LOW); // set the LED on
// }
// else {
// digitalWrite(outpin, HIGH); // set the LED off
// }
// delay(30); // wait for 30 msecond
// }
//**宿題:人の反応速度を測定するプログラムを作って測定し...
//-連休明けの授業(5/8)の開始時に、A5, 1枚に書いて提出して...
//-C 言語では,次のようなプログラムで、”hit now”という文字...
//--http://is.ocha.ac.jp/~siio/hci/hitnow.c
//--このプログラムは固定時間(5秒)後にhit nowが表示され...
//-- 乱数を使って表示までの時間を変える改良をしてもらって...
//-これによりあなたの応答速度を実測して、人の応答速度が 3...
//
//
*マルチメディアプログラミング実習 2018年度後期 [#s6662b38]
**最終課題提出状況(2019/2/5 10時12分現在) [#o10c278c]
これで締め切りとします。タイムスタンプとサイズを確認して...
//g1520520 2015 142K 2 4 10:59 1520520suzukiaki13.zip
// g1720501 2017 992K 2 3 20:02 1720501akiyamahinano...
// g1720502 2017 758K 2 1 21:19 1720502iinosaki12.zip
// g1720503 2017 461K 2 1 20:11 1720503IshijimaMisak...
// g1720504 2017 1.2M 2 3 22:13 1720504manaishida_fi...
// g1720505 2017 1.0M 2 4 10:27 1720505itomika.zip
// g1720506 2017 2.9M 1 30 09:57 1720506enta.zip
// g1720507 2017 116K 2 2 14:44 1720507otaniyumi.zip
// g1720507 2017 122K 2 2 14:46 1720507otaniyumi01.zip
// g1720508 2017 770K 1 31 16:04 1720508_OgasawaraNod...
// g1720509 2017 326K 1 31 14:08 1720509ogawasawako.zip
// g1720511 2017 382K 2 3 23:44 1720511KawanishiMami...
// g1720512 2017 416K 2 3 14:01 1720512Kimura.zip
// g1720513 2017 98K 2 4 18:37 1720513kusuhata.zip
// g1720514 2017 452K 2 3 20:36 1720514goto.zip
// g1720515 2017 3.2K 2 3 20:50 1720515sakatayurie.zip
// g1720517 2017 1.5M 2 1 17:40 1720517 satonanami.zip
// g1720519 2017 3.7M 1 29 15:36 1720519shimizugawa.zip
// g1720520 2017 7.3M 2 3 16:36 1720520shinakane.zip
// g1720521 2017 237K 2 3 20:58 1720521JinnoRiko.zip
// g1720522 2017 137K 2 4 11:45 1720522suzukiharuka....
// g1720524 2017 2.1M 2 4 10:23 1720523.zip
// g1720524 2017 1.0M 2 4 10:23 1720524.zip
// g1720525 2017 1.7M 2 3 21:54 1720525takanosaki.zip
// g1720527 2017 766K 2 4 12:03 1720527 Taguchi Haru...
// g1720528 2017 215K 2 2 18:52 1720528Tsuruoka01.zip
// g1720528 2017 775K 2 4 11:57 1720528Tsuruoka02.zip
// g1720529 2017 537K 2 2 17:44 1720529toriyamanamik...
// g1720530 2017 101K 2 4 11:21 1720530nakato0204.zip
// g1720531 2017 217K 2 3 20:46 1720531HagaTomoe_Sim...
// g1720532 2017 60K 2 4 11:49 1720532hayashidarika...
// g1720533 2017 432K 1 28 15:32 1720533haradahonoka....
// g1720534 2017 9.6M 2 4 12:03 1720534BitohKana.zip
// g1720534 2017 9.6M 2 4 12:21 1720534BitohKana02.zip
// g1720535 2017 264K 1 31 23:03 1720535hiroeayano_la...
// g1720536 2017 147K 2 3 20:12 1720536fukayashiho.zip
// g1720537 2017 821K 1 29 14:58 1720537fujiimaika.zip
// g1720538 2017 1.0M 2 3 21:18 1720538hondakaholhw....
// g1720538 2017 1.0M 2 3 21:50 1720538hondakaho完成...
// g1720539 2017 138K 2 3 23:23 1720539tatsushita.zip
// g1720540 2017 780K 2 2 22:26 1720540RunaMatsumoto...
// g1720540 2017 780K 2 2 22:20 1720540RunaMtsumoto1...
// g1720541 2017 204K 2 4 11:38 1720541MurakamiAyana...
// g1720541 2017 214K 2 4 11:43 1720541MurakamiAyana...
// g1720542 2017 600K 2 3 15:53 1720542YutaniAyaka.zip
// g1720542 2017 600K 2 3 15:58 1720542YutaniAyaka03...
// g1720543 2017 8.5M 2 4 10:26 1720543_watanabe.zip
// g1740665 2013 882K 2 4 11:34 1740665minakawaakiko...
// g1740665 2013 881K 2 4 11:52 1740665minakawaakiko...
// g1720510 2017 17M 2 3 14:37 g1720510oritayukimiS...
// g1720516 2017 2.0M 2 4 08:48 g1720516momosasaki.zip
// g1720526 2017 175K 2 3 13:45 g1720526SimpleDraw.zip
**出席表明アプリケーション [#s026a135]
- http://is.ocha.ac.jp/~siio/IamAttending.zip
#ref(http://is.ocha.ac.jp/~siio/gyazo/b1128c100d39263a848...
- 初めて起動する時は、右クリックして、「開く」ボタンを選...
**2019年1月10日 [#e1b62f01]
***今後の予定 [#de7840d4]
-1月10日(実質最後の授業)
-1月17日(海外出張で自習。演習室は公開します。TAが待機し...
-1月24日 (補講・試験期間のため授業なし。自習。演習室は公...
***Eclipseを使ってみよう [#b72bb1ca]
http://gyazo.com/4383db7fb81f9eacbf5cc959ff77a33d.png
-Eclipseの警告を消す方法
private static final long serialVersionUID = 42L;
という変数を定義しておきます。
***一筆書き解消 [#v227383f]
上で紹介したSimple Drawを、一筆書きにならないように変更し...
***ずれの解消 [#ded1cc80]
ポインタ位置と描画位置がずれる問題を解決してください。
***今後の課題 [#l55762c0]
こちらに続きを書いてあります。これを見ながら改良を進めて...
http://is.ocha.ac.jp/~siio/index.php?SimpleDraw
*マルチメディアプログラミングの最終課題 [#fa431919]
-課題:お絵描きプログラムを作成してさらに取扱説明書を作成...
--この課題のヒントは SimpleDraw をみてください。
** 提出課題として最低やってほしいこと [#hd791dc3]
-ペンの太さをメニューで変えられるようにしてください
-ペンの色をメニューとカラーパレットで変えられるようにして...
-消しゴム機能を追加してください
-ウィンドウの大きさを変えても絵が消えてしまわないようにする
(ダブルバッファを使う)
** 機能拡張:以下のことができれば加点します [#ibf935ab]
-絵や写真のファイルを取り込めるようにする
-いろいろな効果のペンを作る(たとえばペンの動きに従って文...
-絵をファイルへ書き出す機能を作る
-他の絵データをスタンプのように押す機能
-コピーアンドペースト
-メニューバーだけでなく、スライダ、ボタン、別ウィンドウ(...
-そのほか、世の中のお絵描きプログラムにありそうな機能を実...
機能拡張の詳細はSimpleDrawの
-http://is.ocha.ac.jp/~siio/index.php?SimpleDraw#extra
を見てください。SimpleDrawのページでは、
-機能の拡充
-使いやすさの追求
の2通りの拡張を書いてあります。どちらの方針で進めていただ...
説明書に、工夫したところを書いておいてください。
** 取扱説明書の作り方 [#j3398d0e]
-ApplicationsからMicrosoft Office 2011/Microsoft Wordもし...
-せっかくですので作った機能はぜんぶここで説明してください...
-スクリーンキャプチャした図も入れてください。図は次のよう...
--スクリーンキャプチャしたいところで、コマンド(リンゴマ...
--もしくは、コマンド(リンゴマーク)+シフト+4を押すとマ...
--もしくは、コマンド(リンゴマーク)+シフト+4を押し、さ...
--以上の操作で、デスクトップにピクチャファイルができます...
--もしくは、デスクトップのピクチャファイルをダブルクリッ...
-Control キーを押しながらキーボードショートカットを押すと...
-がんばったところ、大変だったところなどを書いていただいて...
** 出来上がったプログラムの提出方法 [#i421b017]
- フォルダを作ってその中にjavaファイルとclassファイルと、...
-このフォルダに名前を付けてください。フォルダの名前は、「...
-このフォルダを圧縮してください
-このフォルダを圧縮してください
-圧縮したファイルを
/home/isstaff/siio/Public/Drop Box/.
に提出してください。ターミナル.appからなら
cp 123456siioitiro.zip /home/isstaff/siio/Public/Drop\ Box
としてください。ファインダーからなら、メニューから「移動...
以下のように入力して、移動ボタンを押して、そこに現れるド...
http://is.ocha.ac.jp/~siio/gyazo/dropbox.png
--書き込み専用なので確認できないけどokですかという意味の...
-レポート提出用フォルダは書き込み専用で見ることができませ...
-同じ名前のフォルダを投げ込むと、エラーになります。という...
** 締切 [#sc18de64]
-締め切りは2019年2月4日11:59am(正午)とします
--この日までに提出してください
//--どうしてもそのあともがんばりたい人は1月31日の11:59pm...
//--可能な限り差し替えます(見落とす可能性がありますので...
**以前の優秀作品例 [#t2007b9e]
-http://is.ocha.ac.jp/~siio/pdf/2013/manual1.pdf
-http://is.ocha.ac.jp/~siio/pdf/2013/manual2.pdf
-http://is.ocha.ac.jp/~siio/pdf/2013/manual3.pdf
-http://is.ocha.ac.jp/~siio/pdf/2013/manual4.pdf
-http://is.ocha.ac.jp/~siio/pdf/2013/manual5.pdf
------------
**講義予定 [#ab05a7eb]
-10月4日ガイダンス
-10月11日
-10月18日休講
-10月25日
-11月1日休講
-11月8日
-11月15日
-11月22日
-11月29日
-12月6日
-12月13日
-12月20日
-12月27日
-1月10日(実質最後の授業)
-1月17日(自習。演習室は公開します。TAが待機します。出欠...
-1月24日 (補講・試験期間のため授業なし。必要ならば演習室...
**javaのマニュアル [#beafbfad]
//http://sdc.sun.co.jp/java/docs/j2se/1.5.0/ja/docs/ja/ap...
//http://java.sun.com/javase/ja/6/docs/ja/api/index.html
//http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html
//http://docs.oracle.com/javase/jp/6/api/
http://docs.oracle.com/javase/jp/8/docs/api/index.html
** 出来上がったプログラムの提出方法 [#bd9cbbf8]
- フォルダを作ってその中にjavaファイルとclassファイル
//と、取扱説明書ファイルと、それ以外に必要なファイルがも...
を入れてください。
フォルダの中のclassファイルをダブルクリックしたらプログラ...
-このフォルダに名前を付けてください。フォルダの名前は、「...
-このフォルダを圧縮してください
--フォルダを選択してファイルメニューから圧縮を選択します
-圧縮したファイルを以下の手順で
/home/isstaff/siio/Public/Drop Box/.
に提出してください。ターミナル.appからなら
cp 123456siioitiro.zip /home/isstaff/siio/Public/Drop\ Box
としてください。ファインダーからなら、メニューから「移動...
以下のように入力して、移動ボタンを押して、そこに現れるド...
http://is.ocha.ac.jp/~siio/gyazo/dropbox.png
--書き込み専用なので確認できないけどokですかという意味の...
-レポート提出用フォルダは書き込み専用で見ることができませ...
-授業中でしたら、[[ココを見ると:http://is.ocha.ac.jp/~sii...
-同じ名前のフォルダを投げ込むと、エラーになります。という...
***教科書 [#a7e1ce26]
http://gyazo.com/de3288074dae1c75f6df4ef3c0b9b3d4.png
http://www.amazon.co.jp/dp/4883732258/
買ってください。もしくは、先輩から安く譲ってもらってくだ...
*** この講義の目的 [#l5592b29]
+Javaでプログラムする
+オブジェクト指向の概念を理解してプログラミングする
+GUIプログラミングをする
*** この講義の順序 [#gcf48d66]
+Javaになれる(C言語などのプログラミング手法の復習)
+オブジェクト指向について理解する
+GUIプログラミングについて理解する(イベント駆動)
+お絵描きプログラムを作ってみる
*** 成績評価 [#c732dbb9]
+お絵描きプログラムの完成度,作り込み
+毎回の宿題の達成(参考程度)
+出席状況(参考程度)
**今学期の授業(終了分) [#od53d56c]
**第1章および第2章 [#y3ae1beb]
*** terminalを起動する [#ia8beba9]
//#ref(How2Java/terminal.png)
http://is.ocha.ac.jp/~siio/gyazo/7366bfab668207c6598c4d88...
- terminalは、/Applications/Utilities/の中にあります。
ちなみに、/Applicationsはファインダでは/アプリケーション...
/Applications/Utilities/は、/アプリケーション/ユーティリ...
- ダブルクリックすると起動します。
よく使うことになると思いますので、dockにドラッグアンドド...
登録しておくと良いかと思います。
- ターミナルから、javacとタイプしてみてください。Javaがす...
オプションの説明が日本語で出てくると思います。
***おすすめテキストエディタCotEditor[#c7258b9c]
https://coteditor.com/img/appicon/128@2x.png
- Javaのプログラムを作るテキストエディタです。一番簡単に...
エディタを呼び出せば良いです。
- でも日本語の設定などが結構難しいので、GUIベースのエディ...
- いくつかありますが、おすすめの一つはCotEditorという、便...
- これも便利なのでdockに入れておくとよいと思います。
こちらからダウンロードできます。
演習室のOSにあわせたバージョンをダウンロードして~/Applica...
https://coteditor.com/archives.ja
*** 超簡単なプログラム(hello world)を作ってみる [#v4ccc293]
- ターミナルから、vi Hello.javaとかemacs Hello.javaとかpi...
もしくは、cotEditerを起動して作成します。
- ここで、以下のようなプログラムを書いてみます。
class Hello {
public static void main (String args[]) {
System.out.println("hello java world!");
}
}
http://is.ocha.ac.jp/~siio/gyazo/20121004010107.png
- これをHello.javaという名前で保存して、コンパイル実行し...
javac Hello.java (コンパイルする)
java Hello (実行する。.javaなどの拡張子は不要)
hello java world! (結果)
- 次に簡単なウィンドウを出してみましょう。
授業の最後の方で紹介する,Swingというフレームワークを使っ...
import javax.swing.JFrame;
public class SimpleWindow {
public static void main(String argv[]) {
JFrame f = new JFrame("私が作った最初の窓...
f.setSize(200,100);
// f.setDefaultCloseOperation(JFrame.EXIT_...
f.setVisible(true);
}
}
これをSimpleWindow.javaという名前で保存して、
javac SimpleWindow.java
java SimpleWindow
とタイプしてコンパイル/実行します。
このプログラムは,ウィンドウのクローズボタンを押しても終...
プログラムを停止するには,ターミナルでコントロール-cを押...
#ref(How2Java/simplewindow.png)
**第3章 [#xc22f04b]
-演習1
--演習3.4をみて、自分の名前の最初の文字の文字コードを表示...
-演習2
--コマンドの引数はarg[0], arg[1] ... などにString型の配列...
--二つの引数を与えたときに、それが+でつないで表示されるプ...
http://gyazo.com/8159f78165e17781a7110de3763c833c.png
ヒント
--以下は引数一つを表示するだけのサンプルです。これをもと...
--arg[0]とarg[1]をprintlnの中で+でつないで表示すれば良い...
class ArgsTest {
public static void main (String args[]) {
System.out.println(args[0]);
}
}
解答
class ArgsTest {
public static void main (String args[]) {
System.out.println(args[0] + " + " + args[1]);
}
}
**第4章 [#f2e95643]
--演習4.2をやってみよう
**第5章 [#p54c6568]
***演習 [#leda55b3]
-演習問題5.4(変更)
乱数を10個表示する
public class Score {
public static void main (String argv[]) {
int i,a;
for(i=0;i<10;i++) {
a=(int)(Math.random() * 100);
System.out.println(a);
}
}
}
次にこの乱数を点数とみなして、演習問題5.4の基準に従ってAB...
動作例を以下に示す。
http://gyazo.com/829b04a7fc82cdfe9dd0dfa650af873e.png
解答例:
public class Score {
public static void main (String argv[]) {
int i,a;
for(i=0;i<10;i++) {
a=(int)(Math.random() * 100);
System.out.print(a + " ");
if(a<40) System.out.println("D");
else if(a<60) System.out.println("C");
else if(a<80) System.out.println("B");
else System.out.println("A");
}
}
}
-演習問題5.5をやってみよう
http://gyazo.com/1733defca0c709c41c69ea729320ab61.png
解答例:
class Kinri {
public static void main (String args[]) {
double okane=100000;
int year;
year=1;
while(okane < 200000) {
okane = okane * 1.05;
System.out.println("year = " + year + " okane= " + ok...
year++;
}
}
}
現在の普通預金の金利0.001%だと倍になるのに何年かかるだろ...
//http://gyazo.com/95cd94db39b407e7961355b20da8fc67.png
-演習5.6をやってみよう
while文をfor文に変えてみる
解答例:
class Kinri {
public static void main (String args[]) {
double okane=100000;
int year;
for(year=1;okane < 200000; year++) {
okane = okane * 1.05;
System.out.println("year = " + year + " okane= " + ok...
}
}
}
***for-each文は新しい手法なので練習しましょう [#s17e2f54]
-プログラム5.7の代わりに以下をやってみよう
class ArrayTest {
public static void main (String args[]) {
int[] vec = new int[3];
vec[0]=1;
vec[1]=2;
vec[2]=3;
for (int x: vec) {
System.out.println(x);
}
}
}
*** 演習 [#vc946bd9]
mainの引数argsは、Stringの配列で、コマンドラインで起動し...
コマンドの後に続けた書いた文字が入っています。
args[0], args[1], args[2] .... をすべてfor-each文で
表示するプログラムを書いてみましょう。
http://gyazo.com/8d8effac163e0dc939e74f237d8507b1.png
ヒント:for(String s: args)を使います
-解答例
class ArgsTest2 {
public static void main (String args[]) {
for(String s: args)
System.out.println(s);
}
}
-今日の課題提出
ArgsTest2.javaとArgsTest2.classを出席番号+ローマ字名前の...
**第6章 クラスの基礎 [#h5b270c6]
***クラスとインスタンスの説明をしました [#gc6def4c]
-クラスは型、インスタンスはそれから作られたもの
--クラスがたいやきの焼き型だとすると、インスタンスはそれ...
--クラスは設計図でインスタンスはそれから作られたもの
-クラスとインスタンスそれぞれにメソッドと変数がある
--クラス変数 例:何個のインスタンスを作ったか?
--クラスメソッド 例:インスタンスを作れ
--インスタンス変数 例:ひとつのたいやきの重さ
--インスタンスメソッド 例:たいやきをxxグラム食べる
http://gyazo.com/bbdd3587977a172f7fa7f00c4f5787e0.png
-演習
今作ったTestPoint3D.javaを変更して
- 二つのインスタンスpt1, pt2を作り、
- それぞれのインスタンス変数x, y, zを10,20,30と-10,-20,-3...
- それぞれのインスタンスメソッドpinrt()を呼ぶ
ようにしてください。
この結果、以下のような実行結果が出るようにしてください
http://gyazo.com/deeb78a70a724a01ce76945235d42ab8.png
***クラス変数・メソッドとインスタンス変数・メソッド [#w88...
- staticとついているのがクラス変数、クラスメソッド
- staticが付いていないのがインスタンス変数、インスタンス...
***public static void main の説明をしました [#p8e5e198]
-javaコマンドは、引数のクラスのクラスメソッドmainを実行し...
--staticと付いているのがクラス変数、クラスメソッドの印です
-Pointクラスにクラスメソッドmainを実装すれば自分自身をテ...
-クラスPoint3Dに自分自身をテストするクラスメソッドmainを...
http://gyazo.com/bdef2ab8e69f7f6e62273c2d67d7af2e.png
***変数にはメソッド経由でアクセスするのが良いという説明を...
-変数の型などを将来変更してもメソッドの書き換えで対応でき...
public class Point {
private int x, y;
void set(int newx, int newy) {x=newx; y=newy;}
int getx() { return x;}
int gety() { return y;}
void print () {
System.out.println(x + ", " + y);
}
public static void main(String argv[]) {
Point pt1= new Point();
Point pt2 = new Point();
pt1.set(10,20);
pt2.set(-pt1.getx(), -pt1.gety());
pt1.print();
pt2.print();
}
}
-Point3Dのメソッドを充実させて次のmain()メソッドで
10, 20, 30
-10, -20, -30
という結果が出るようにしましょう
public static void main(String argv[]) {
Point3D pt1 = new Point3D();
Point3D pt2 = new Point3D();
pt1.set(10, 20, 30);//インスタンス変数を...
pt2.set(-pt1.getx(), -pt1.gety(), -pt1.ge...
pt1.print();//インスタンスメソッド呼出
pt2.print();
}
-Point3Dに、他の点との距離を返すメソッド distance ( Point...
10, 20, 30
-10, -20, -30
74.83314773547883
という結果が出るようにしましょう
public static void main(String argv[]) {
Point3D pt1 = new Point3D();
Point3D pt2 = new Point3D();
pt1.set(10, 20, 30);//インスタンス変数を...
pt2.set(-pt1.getx(), -pt1.gety(), -pt1.ge...
pt1.print();//インスタンスメソッド呼出
pt2.print();
System.out.println(pt1.distance(pt2));
}
--解答例
double distance ( int ptx, int pty, int ptz ) {
int dx = ptx - this.x;
int dy = pty - this.y;
int dz = ptz - this.z;
return Math.sqrt(dx * dx + dy * dy + dz * dz);
}
double distance ( Point3D p ) {
return this.distance(p.getx(), p.gety(), p.getz());
}
-今日の課題提出
Point3D.javaとPoint3D.classを出席番号+ローマ字名前のフォ...
**2018年10月25日宿題: Osaifuクラスを作ってみよう [#ce76c...
次回は休講ですので再来週11/8の授業の最初に回収します。
-Osaifuクラスからはインスタンスがたくさん作られる
--Osaifuクラスはお財布の設計図/工場、ここから実際のお財...
--工場出荷時の残金は0円だけど、その後、いろいろな値になる...
--ということで残金はインスタンス変数とすべきだろう
-Osaifuクラスには次のメソッド、変数が必要だろう
--残金を表すインスタンス変数 int okane
--お金を入金するインスタンスメソッド void in(int x);
--お金を出金するインスタンスメソッド int out(int x); 戻...
--残金を印刷するインスタンスメソッドがあってもよいだろう ...
http://gyazo.com/bd6eaafd220dc7ff791288089f293b28.png
-Osaifuクラスをテストするmain()メソッドでは次のことをやっ...
-- Osaifuインスタンスを一つ作ってそれをsaifu1という名前に...
-- Osaifuインスタンスをもう一つ作ってそれをsaifu2という名...
--saifu1に1000円入金する
--saifu2に500円入金する
--saifu1とsaifu2が持っている金額を印刷する
--saifu1から200円出金してそれをsaifu2に入金する
--saifu1とsaifu2が持っている金額を印刷する
public static void main(String argv[]) {
Osaifu saifu1 = new Osaifu();
Osaifu saifu2 = new Osaifu();
saifu1.in(1000);
saifu2.in(500);
saifu1.print();
saifu2.print();
saifu2.in(saifu1.out(200));
saifu1.print();
saifu2.print();
}
http://gyazo.com/c618901458edc1ba338cab87d2810157.png
-Osaifu.java 解答編
public class Osaifu {
int okane;
public void in (int x) { okane += x; }
public int out(int x) { okane -= x; return x; }
public void print() {
System.out.println( "okane = " + okane +" yen");
}
public static void main(String argv[]) {
Osaifu saifu1 = new Osaifu();
Osaifu saifu2 = new Osaifu();
saifu1.in(1000);
saifu2.in(500);
saifu1.print();
saifu2.print();
saifu2.in(saifu1.out(200));
saifu1.print();
saifu2.print();
}
}
--このプログラムでは残金がマイナスになってしまってもかま...
--このためには、例えばoutメソッドを以下のようにすれば良い
public int out(int x) {
if(x < okane ) {
okane = okane -x;
return x;
} else {
int nokori = okane;
okane =0;
return nokori;
}
}
*** つぎにOsaifuクラスにコンストラクタを追加してみよう [#...
-Osaifu() で残金0のインスタンスを作る
-Osaifu(int x) で引数を残金の初期値としたインスタンスを作る
ことができるコンストラクタを作ろう。
これをmainから呼んで、上記のプログラムと同じことをするた...
Osaifu saifu1 = new Osaifu(1000);//インスタンスを作る
//最初の保持金額を1000円にする
Osaifu saifu2 = new Osaifu(500);//インスタンスを作る
//最初の保持金額を500円にする
とすることになる。
***コンストラクタ解答編 [#w62499a7]
以下のコンストラクタを作ることになる。
Osaifu() { okane = 0; }
Osaifu(int x) { okane = x; }
これは以下のように書いても良い。
Osaifu() { this(0); }
Osaifu(int x) { okane = x; }
**第8章 継承 [#ka97b6ac]
継承の話をしました。
別のクラスを継承することで、
差分だけを書いて機能を拡張していくことができます。
http://gyazo.com/2c8ef14d8be63b9fc18c58d79f2f3879.png
*** Osaifuクラスを継承してOsaifuUSDクラスを作ってみよう [...
-OsaifuUSDクラスはアメリカで買い物をするときに便利な、ア...
-あたらしく追加するメソッドは以下です
-- void inUSD(int x) xドルをお財布に入金します。このと...
-- int outUSD(int x) xドルをお財布から出金します。この...
--1ドルは90円にしてください
//-スーパークラスのメソッドを上書きするメソッドは以下です
//-- void print() お財布の残高を円とドルで表示します
-OsaifuUSDクラスをテストするmain()メソッドでは次のことを...
-- OsaifuUSDインスタンスを一つ作ってそれをsaifu1という名...
-- OsaifuUSDインスタンスをもう一つ作ってそれをsaifu2とい...
--saifu1に1000円入金する
--saifu2に5ドル入金する
--saifu1とsaifu2が持っている金額を印刷する
--saifu1から2ドル出金してそれをsaifu2に入金する
--saifu1とsaifu2が持っている金額を印刷する
-動作例
http://gyazo.com/f51ea5895aaab32bb30b9a940d91515d.png
-ヒント:一行目はこれ
public class OsaifuUSD extends Osaifu {
-ヒント:mainはこんな感じ
public static void main(String argv[]) {
OsaifuUSD saifu1= new OsaifuUSD();
OsaifuUSD saifu2=new OsaifuUSD();
saifu1.in(1000);
saifu2.inUSD(5);
saifu1.print();
saifu2.print();
saifu2.inUSD(saifu1.outUSD(2));
saifu1.print();
saifu2.print();
}
-解答例
public class OsaifuUSD extends Osaifu {
public int outUSD(int usd) {
okane-=usd * 90;
return usd;
}
public void inUSD(int usd) {
okane+=usd * 90;
}
public static void main(String argv[]) {
OsaifuUSD saifu1 = new OsaifuUSD();
OsaifuUSD saifu2 = new OsaifuUSD();
saifu1.in(1000);
saifu2.inUSD(5);
saifu1.print();
saifu2.print();
saifu2.inUSD(saifu1.outUSD(2));
saifu1.print();
saifu2.print();
}
}
*** OsaifuUSDクラスの改造(1) [#g8c0b7a2]
親のメソッドを活用しても良い
public class OsaifuUSD extends Osaifu {
public int outUSD(int usd) {
return ( out( use * 90) / 90 );
}
public void inUSD(int usd) {
in( usd * 90 );
}
…
}
親のメソッドを呼ぶことを明示的に書くためにsuper.をつかっ...
public class OsaifuUSD extends Osaifu {
public int outUSD(int usd) {
return ( super.out( use * 90) / 90 );
}
public void inUSD(int usd) {
super.in( usd * 90 );
}
…
}
***小テスト練習 [#g4c60a6e]
以下のプログラムの中で、
クラス、インスタンス、サブクラス、スーパクラス、クラスメ...
インスタンス化、継承がどこで行われているのか確認してくだ...
(importで始まる一行目はまだ説明していない内容なので小テス...
import javax.swing.JFrame;
public class SampleWindow extends JFrame {
public static void main(String args[]) {
SampleWindow w = new SampleWindow();
w.setVisible(true);
}
}
**第9章 エラーと例外処理 [#gd4f8eae]
次のプログラムを作って試してください。
引数が少ないとエラーが出るのを確認してください。
public class TestException {
public static void main(String argv[]){
System.out.println(argv[0]+" "+argv[1]);
System.out.println("Nice to meet you.");
}
}
エラーが出る可能性のある場所をtryでくくっておき、
エラーが出たらそれを捕捉する処置をcatchで指定します。
public class TestException {
public static void main(String argv[]){
try{
System.out.println(argv[0]+" "+argv[1]);
System.out.println("Nice to meet you.");
}
catch (Exception e) {
System.out.println("please input 2 words.");
}
}
}
**第10章 Stringクラスとコレクションフレームワーク [#t197...
***最初の引数(文字列)を表示するプログラムを作る。クラス...
public class TestString {
public static void main(String argv[]) {
System.out.println(argv[0]);
}
}
***演習10.1改:最初の引数(文字列)を逆に出力するプログラ...
[e100:?/Documents/java] siio% java TestString ochanomizu
ochanomizu
uzimonahco
[e100:?/Documents/java] siio%
さらには、引数がない場合は引数入力を促すことを表示してみ...
[e100:?/Documents/java] siio% java TestString
please input a word
[e100:?/Documents/java] siio%
このソースは、
public class TestString {
public static void main (String argv[]) {
try{
System.out.println(argv[0]);
int len = argv[0].length();
for(int i = len - 1; i>=0; i--) {
System.out.print(argv[0].charAt(i));
}
System.out.println();
}
catch (Exception e) {
System.out.println("please input a word");
}
}
}
である。
***Linked List の練習 [#d2a5cbd0]
サンプルプログラムを実行するときは、
LinkedList<String> list = new LinkedList<String>();
などと定義すると良い。
***program 10.2 改造 [#j2f946c0]
Alice --> Bob --> Cindy --> DaveというLinkedListをつく...
それからtoArray()メソッドでString配列を作ってfor each文で...
import java.util.*;
public class LinkedListTest{
public static void main(String[] argv) {
LinkedList<String> list = new LinkedList...
list.add("Alice");
list.add("Bob");
list.add("Dave");
list.add("Cindy");
Object[] names = list.toArray();
for(Object s: names ) System.out.println...
}
}
***Hash Mapの練習 [#jf7eb616]
プログラム10.4を参考にして、
以下のように動作する英語ー日本語単語変換プログラムを作れ。
[e100:?/Documents/java] siio% java EtoJ banana
バナナ
[e100:?/Documents/java] siio% java EtoJ apple
りんご
[e100:?/Documents/java] siio% java EtoJ
Please input an English word
ヒント:
import java.util.*;
public class EtoJ{
public static void main(String args[]) {
HashMap<String,String> map = new HashMap<String,String>...
map.put("apple","りんご");
map.put("banana","バナナ");
map.put("orange","みかん");
map.put("pineapple","パイナップル");
map.put("grape","ぶどう");
map.put("peach","もも");
map.put("melon","メロン");
map.put("lemon","レモン");
try {
System.out.println(map.get(args[0]));
}
catch(Exception e) {
System.out.println("Please input an English word");
}
}
}
- 今日の課題提出
EtoJ.javaとEtoJ.classを出席番号+ローマ字名前のフォルダに...
**第11章 入出力 [#hb3a05b8]
***一番簡単なファイル書き出し [#e97b1c07]
import java.io.*;
public class FoutTest {
public static void main(String[] args) {
try {
FileOutputStream fout = new FileOutputStream("fout.da...
fout.write(1234);
fout.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
これでfout.datという名前のファイルができあがるはずです。 ...
od -h fout.dat
または
hexdump fout.dat
してみてください
***整数を出力する例 [#j899e2e7]
import java.io.*;
public class DoutTest {
public static void main (String[] args) {
try {
FileOutputStream fout = new FileOutputStream("dout.da...
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(100);
dout.close();
}catch (Exception e) {
System.out.println(e);
}
}
}
これでdout.datという名前のファイルができあがるはずです。 ...
od -h dout.dat
または
hexdump dout.dat
してみてください
e100:java siio$ hexdump dout.dat
0000000 00 00 00 64
0000004
***整数を入出力する例 [#j899e2e7]
import java.io.*;
public class DoutTest {
public static void main (String[] args) {
try {
FileOutputStream fout = new FileOutputStream("dout.da...
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(100);
dout.close();
FileInputStream finput = new FileInputStream("dout.da...
DataInputStream dinput = new DataInputStream(finput);
System.out.println(dinput.readInt());
dinput.close();
}catch (Exception e) {
System.out.println(e);
}
}
}
***演習11.1 をやってください [#z72d00c6]
作ったファイルを
od -h dout.dat
または
hexdump dout.dat
してみてください
解答例
import java.io.*;
public class En111 {
public static void main (String[] args) {
int i;
try {
FileOutputStream fout = new FileOutputStream ("dout.d...
DataOutputStream dout = new DataOutputStream(fout);
for(i=1;i<101;i++) dout.writeInt(i);
dout.close();
FileInputStream fin = new FileInputStream ("dout.dat");
DataInputStream din = new DataInputStream(fin);
for(i=1;i<101;i++) System.out.println(din.readInt());
din.close();
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
}
***プログラム11.3をやってみてください [#h15edee7]
作ったファイルを
od -h
または
hexdump
してみてください
http://gyazo.com/74c061dfe2fcd6b72885878f867c78ba.png
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
FileWriter fwriter = new FileWriter("writer.txt");
PrintWriter pwriter = new PrintWriter(fwriter);
pwriter.println(2006);
pwriter.println("Java教科書");
//fwriter.write("Java教科書");
pwriter.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
つぎに、プログラム11.4を参考にして、
このPrint Write Testに書き足して、
書き込んだデータを読み出して画面に表示するプログラムを作...
ヒント:
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
FileWriter fwriter = new FileWriter("writer.txt");
PrintWriter pwriter = new PrintWriter(fwriter);
pwriter.println(2006);
pwriter.println("Java教科書");
//fwriter.write("Java教科書");
pwriter.close();
ここに書き足す
}
catch (IOException e) {
System.out.println(e);
}
}
}
***文字ストリームをファイルに書いて読み込むプログラム [#b...
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
FileWriter fwriter = new FileWriter("writer.txt");
PrintWriter pwriter = new PrintWriter(fwriter);
pwriter.println("java 教科書" + 2001 );
pwriter.close();
//writer.txtのファイルの中身をSystem.out.printlnで表示...
FileReader freader = new FileReader("writer.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp;
while( (tmp=breader.readLine() ) != null) {
System.out.println(tmp);
}
breader.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
***プログラム11.5をやってこれを拡張して演習11.2をやってく...
キーボードから1行入力された文字列によるテキストファイルを...
http://gyazo.com/f9aee7f492d574f870e85e2022df374c.png
ヒント
import java.io.*;
public class En112 {
public static void main(String[] args) {
try {
ここにプログラムを書く
}
catch(IOException e) {
System.out.println(e);
}
}
}
- 今日の課題提出
「キーボードから1行入力された文字列によるテキストファイル...
- 解答例
import java.io.*;
public class En112 {
public static void main(String[] args) {
try {
InputStreamReader ireader = new InputStreamReader (Sy...
BufferedReader breaderK = new BufferedReader(ireader);
String line = breaderK.readLine();
FileWriter fwriter = new FileWriter("writer.txt");
PrintWriter pwriter = new PrintWriter(fwriter);
pwriter.println(line);
pwriter.close();
FileReader freader = new FileReader("writer.txt");
BufferedReader breaderF = new BufferedReader(freader);
String tmp=null;
while( (tmp=breaderF.readLine()) != null)
System.out.println(tmp);
breaderF.close();
}
catch(IOException e) {
System.out.println(e);
}
}
}
***http://www.ocha.ac.jp/の内容を表示するプログラムを書い...
http://gyazo.com/13044fdd9d372118a1f6fe93896eadb3.png
ヒント1
import java.net.*;
が必要です。
URL targetURL = new URL("http://www.ocha.ac.jp/");
でURLクラスのインスタンスが得られる。
InputStream istream = targetURL.openStream();
でこれからInputStreamのインスタンスが得られる。
InputStreamReader isreader = new InputStreamReader(istre...
でこれからInputStreamReaderのインスタンスが得られる。
BufferedReader breader = new BufferedReader( isreader );
でこれからBufferedReader のインスタンスが得られる。
ヒント2
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
ここにプログラムを書く
} catch (IOException e) {
System.out.println("error...");
}
}
}
ヒント3:
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://www.ocha.ac.jp/");
InputStream istream = targetURL.openStream();
InputStreamReader isreader = new InputStreamReader(is...
BufferedReader breader = new BufferedReader( isreade...
ここで一行ずつ読み込む
} catch (IOException e) {
System.out.println("error...");
}
}
}
解答例:
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://www.ocha.ac.jp/");
InputStream istream = targetURL.openStream();
InputStreamReader isreader = new InputStreamReader(is...
BufferedReader breader = new BufferedReader( isreade...
String line;
while((line=breader.readLine()) != null) System.out.p...
} catch (IOException e) {
System.out.println("error...");
}
}
}
***写真ファイルのダウンロード [#edb3e256]
http://is.ocha.ac.jp/~siio/cat.jpg
をダウンロードして、cat.jpgというファイルを作るプログラム...
データはテキストじゃなくて、バイナリーです。
ヒント1:
- InputStreamのインスタンスに対してread()メソッドを使うと...
-- 読み終わると-1になります。
- 1バイトのデータを書き出すなら、FileOutputStreamだけで可...
ヒント2:
import java.io.*;
import java.net.*;
public class URLJpeg {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
というインスタンスを作って、
istream.read()
で読んで、
fout.write(1バイト)
で書き出します。
解答例
import java.io.*;
import java.net.*;
//http://is.ocha.ac.jp/~siio/cat.jpg
//をダウンロードして、cat.jpgというファイルを作るプログ...
public class URLJpeg {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
int aData;
while((aData = istream.read()) != -1) fout.write(aDa...
istream.close();
fout.close();
} catch (IOException e) {
System.out.println("error...");
}
}
}
***写真読み込みの高速化 [#ia7ce1f8]
上記の例では写真データを1バイトずつ読み書きしていました。
InputStreamのメソッドを調べると、複数バイト単位で読み込む...
たとえば、1024バイトずつ読み書きすることで、処理速度が向...
そこで、複数バイト読み書きするよう、上記のプログラムを変...
実際にどの程度(実行速度にして何倍くらい)性能向上するか...
read
public int read(byte[] b)
throws IOException
入力ストリームから配列長さだけのバイト数を読み込もうとし...
実際に読み込まれたバイト数は整数として返されます。
戻り値は、バッファに読み込まれたバイトの合計数。ストリー...
を使って読みこみ、
write
public void write(byte[] b,
int off,
int len)
throws IOException
指定された byte 配列の、オフセット位置 off から始まる le...
を使ってください。
-ヒント
byte[] data = new byte[1024];
という配列を用意して、
int datalength;
while(( datalength=istream.read(data)) != -1) fout.writ...
とします。
-解答例
import java.io.*;
import java.net.*;
//http://is.ocha.ac.jp/~siio/cat.jpg
//をダウンロードして、cat.jpgというファイルを作るプログ...
//データはテキストじゃなくて、バイナリーです。
public class URLJpeg2 {
public static void main (String argv[]) {
byte[] data = new byte[1024];
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
int datalength;
while(( datalength=istream.read(data)) != -1) fout.wr...
istream.close();
fout.close();
} catch (IOException e) {
System.out.println("error...");
}
}
}
ここでは1024バイトを読み込むことにしました。でも、InputSt...
available()
この入力ストリームのメソッドの次の呼出しによって、ブロッ...
これを使えば、適切な長さを見積もれるかもしれません。
**第12章 Swing 続き [#r35d7464]
***とても簡単なウィンドウ [#r57b34f9]
import javax.swing.JFrame;
public class SimpleWindow {
public static void main(String argv[]) {
JFrame f = new JFrame("私が作った最初の窓...
f.setSize(200,100);
f.setDefaultCloseOperation(JFrame.EXIT_ON...
f.setVisible(true);
}
}
*** JFrameを継承するプログラミング [#y09a72d9]
import javax.swing.JFrame;
public class SimpleWindow extends JFrame {
public void initialize () {
this.setTitle("私が作った最初の窓");
this.setSize(200,100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main (String argv[]) {
SimpleWindow sw = new SimpleWindow();
sw.initialize();
}
}
***ラベルを表示するウィンドウ [#xedfffec]
プログラム12.1を参考にして、上記の、継承を使ったプログラ...
Hello!という文字を出してみよう。
http://gyazo.com/c6efe47de19436f7564660377fe8b98c.png
解答例:
import javax.swing.*;
import java.awt.*;
public class SimpleWindow extends JFrame {
public void initialize () {
this.setTitle("私が作った最初の窓");
JLabel label = new JLabel("Hello!");
Container container = this.getContentPane();
container.add(label);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String argv[]) {
SimpleWindow sw = new SimpleWindow();
sw.initialize();
}
}
***ボタンを1個貼り付ける [#c069f727]
JLabelのところをJButtonにしてみましょう
**本日の課題 [#i1cc2d8c]
ボタンを出すプログラムのjavaとclassを提出してください。
***ボタンを1個貼り付ける [#c069f727]
JLabelのところをJButtonにしてみましょう
解答例:
import javax.swing.*;
import java.awt.*;
public class SimpleWindow extends JFrame {
public void initialize () {
this.setTitle("私が作った最初の窓");
JButton button = new JButton("Hello!");
Container container = this.getContentPane();
container.add(button);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String argv[]) {
SimpleWindow sw = new SimpleWindow();
sw.initialize();
}
}
http://is.ocha.ac.jp/~siio/index.php?plugin=attach&pcmd=o...
***ボタンを2個表示するウィンドウ [#cb6cf696]
プログラム12.2をみてください。
getContentPane()で得られたContainerに直接ボタンを貼付ける...
貼付けられるのは一つのボタンだけのようです。
そこで、JPanel (パネル) に2個のボタンを貼付け、それをCon...
http://gyazo.com/03c28df2419065241b8736b7b69d7fd3.png
プログラム12.2を参考にして、継承を使ったプログラムによる...
2個のボタンを出してみよう。
http://gyazo.com/4c3086ae9b6b5434d2ea741369f731c5.png
解答例:
import javax.swing.*;
import java.awt.*;
public class SimpleButton extends JFrame {
public void initialize () {
this.setTitle("私が作った最初の窓");
JPanel panel = new JPanel();
JButton button1 = new JButton("button1");
JButton button2 = new JButton("button2");
panel.add(button1);
panel.add(button2);
Container container = this.getContentPane();
container.add(panel);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String argv[]) {
SimpleButton sw = new SimpleButton();
sw.initialize();
}
}
このプログラムでは,ボタンを押しても何もおこりません.
ボタンが押されたイベントを受け取るためには,
+ActionListenerをimplementしたクラスを作る
+そのインスタンスを作る
+これをボタンにaddActionListener()で登録する
必要があります.
プログラム12.3を参考に,ボタンを押したらprintlnで次のよう...
http://gyazo.com/67d27d0588f4dd5d11410e1107165994.png
ヒント(最初の6行です)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleButton extends JFrame implements Acti...
JButton button1, button2;
public void initialize () {
解答例
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleButton extends JFrame implements Acti...
JButton button1, button2;
public void initialize () {
this.setTitle("私が作った最初の窓");
JPanel panel = new JPanel();
button1 = new JButton("button1");
button2 = new JButton("button2");
button1.addActionListener(this);
button2.addActionListener(this);
panel.add(button1);
panel.add(button2);
Container container = this.getContentPane();
container.add(panel);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed (ActionEvent e) {
if(e.getSource()==button1)
System.out.println("Hello");
else
System.out.println("Goodbye");
}
public static void main(String argv[]) {
SimpleButton sw = new SimpleButton();
sw.initialize();
}
}
ここではボタンを区別するために、インスタンス(への参照)...
一つは、ボタンのテキストを入手することである。ボタンのテ...
ボタンのテキストを表示するだけなら以下のようにしても良い。
public void actionPerformed(ActionEvent e){
System.out.println(((JButton)e.getSource...
}
もう一つは、ボタンにコマンドを書く方法である。
ボタンにsetActionCommand(String)を定義しておくと、getActi...
button1.setActionCommand("hello");
としておけば、actionPerformedの中で
e.getActionCommand();
で文字列を得られる。例えば、
public void actionPerformed(ActionEvent e){
System.out.println(e.getActionCommand());
}
でコマンド部分を印刷できる。
***プログラム12.4をやってください。 [#f163e343]
***演習12.2(改) [#b195cae9]
上で作った二つのボタンのプログラムに対して、レイアウトマ...
演習のヒント
bt1 = new JButton("button1");
bt2 = new JButton("button2");
panel.setLayout(new FlowLayout(FlowLayout.RIGHT));
bt1.setActionCommand("this is b1");
bt2.setActionCommand("this is b2");
FlowLayoutにはCENTER, LEFT, RIGHTなどの揃え方の指定があり...
**第13章 様々なコンポーネントとレイアウト [#nfdf4f5e]
***プログラム13.1の説明図 [#ec2d7584]
http://gyazo.com/649bbe400f96c8c31923bcf7e5aebbd4.png
***提出 [#ge1f31d6]
本日作ったボタンを二つ表示するプログラム(どのバージョン...
[以下を、宿題としていましたがみなさん苦労されているので...
**第13章 様々なコンポーネントとレイアウト(続き) [#gb031c...
***演習:プログラム13.1のようにボタンを配置して、それぞれ...
ヒント:プログラム12.4を見て、上記のプログラムを拡張して5...
なお、以下のようにすると、ボタンの名前を印刷することがで...
public void actionPerformed(ActionEvent e){
System.out.println(((JButton)e.getSource...
}
プログラム12.4は継承を使っていないので以下のように書き直...
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ComplicatedLayoutSample extends JFrame impl...
public void initialize() {
JPanel panel1 = new JPanel();
JPanel panel2= new JPanel();
JPanel panel3= new JPanel();
JPanel panel4= new JPanel();
JPanel panel5= new JPanel();
panel1.setLayout(new FlowLayout());
for (int i=1; i<=3; i++) {
panel1.add(new JButton("NORTH" + i));
}
panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXI...
for (int i=1; i<=3; i++) {
panel2.add(new JButton("WEST" + i));
}
panel3.setLayout(new GridLayout(3,2));
for (int i=1; i<=6; i++) {
panel3.add(new JButton("CENTER" + i));
}
panel4.setLayout(new BorderLayout());
panel4.add(new JButton("EAST1"), BorderLayout.NORTH);
panel4.add(new JButton("EAST2"), BorderLayout.SOUTH);
panel5.setLayout(new BoxLayout(panel5, BoxLayout.X_AXI...
for (int i=1; i<=4; i++) {
panel5.add(new JButton("SOUTN" + i));
}
Container container = this.getContentPane();
container.add(panel1,BorderLayout.NORTH);
container.add(panel2,BorderLayout.WEST);
container.add(panel3,BorderLayout.CENTER);
container.add(panel4,BorderLayout.EAST);
container.add(panel5,BorderLayout.SOUTH);
this.setSize(400,200);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
}
public static void main(String[] args) {
ComplicatedLayoutSample cls = new ComplicatedLayoutSam...
cls.initialize();
}
}
つぎにaction listenerとして自分自身を追加します。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ComplicatedLayoutSample extends JFrame impl...
public void initialize() {
JPanel panel1 = new JPanel();
JPanel panel2= new JPanel();
JPanel panel3= new JPanel();
JPanel panel4= new JPanel();
JPanel panel5= new JPanel();
panel1.setLayout(new FlowLayout());
for (int i=1; i<=3; i++) {
JButton btn = new JButton("NORTH" + i);
btn.addActionListener(this);
panel1.add(btn);
}
panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXI...
for (int i=1; i<=3; i++) {
JButton btn = new JButton("WEST" + i);
btn.addActionListener(this);
panel2.add(btn);
}
panel3.setLayout(new GridLayout(3,2));
for (int i=1; i<=6; i++) {
JButton btn = new JButton("CENTER" + i);
btn.addActionListener(this);
panel3.add(btn);
}
panel4.setLayout(new BorderLayout());
JButton btn1 = new JButton("EAST1");
btn1.addActionListener(this);
panel4.add(btn1, BorderLayout.NORTH);
JButton btn2 = new JButton("EAST2");
btn2.addActionListener(this);
panel4.add(btn2, BorderLayout.SOUTH);
panel5.setLayout(new BoxLayout(panel5, BoxLayout.X_AXI...
for (int i=1; i<=4; i++) {
JButton btn = new JButton("SOUTN" + i);
btn.addActionListener(this);
panel5.add(btn);
}
Container container = this.getContentPane();
container.add(panel1,BorderLayout.NORTH);
container.add(panel2,BorderLayout.WEST);
container.add(panel3,BorderLayout.CENTER);
container.add(panel4,BorderLayout.EAST);
container.add(panel5,BorderLayout.SOUTH);
this.setSize(400,200);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
System.out.println( ((JButton)e.getSource()).getText()...
}
public static void main(String[] args) {
ComplicatedLayoutSample cls = new ComplicatedLayoutSam...
cls.initialize();
}
}
***どのボタンからのイベントであるかを識別する方法 [#i076d...
-プログラム12.3では
--ボタンへの参照を、action Performedから参照できる変数に...
--action Performedの中で、e.get Source()してButtonのイン...
-プログラム12.4では、
--準備として button.set Action(button.get Text());でボタ...
-- action Performedの中で e.get Action Command()でアクシ...
-ということで以下のようなことが可能です。
--acttion Performedの中で、get Source()してボタンを得る
--そのボタンからget Textしてボタンの文字列を得て文字比較...
--ただし、get Sourceで得られるのはボタンの親クラスなのでB...
--以下をaction Performedのなかで試してみよう
System.out.println((JButton)(e.getSource()).getText());
***13.2節を読んで,プログラム13.2を実行させてください [#s...
ボタンが一つしかないプログラムなので、ActionPerformedの中...
ボタン種類のチェックを省略してしまっているところが特徴で...
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class JTextFieldSample extends JFrame implements ...
JButton button;
JTextField textleft, textright;
public void initialize() {
button = new JButton("left to right");
button.addActionListener(this);
textleft= new JTextField(10);
textright= new JTextField(10);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(textleft, BorderLayout.WEST);
panel.add(textright, BorderLayout.EAST);
panel.add(button, BorderLayout.SOUTH);
this.getContentPane().add(panel);
this.setTitle("JTextFieldSample");
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
textright.setText(textleft.getText());
textleft.setText("");
}
public static void main(String[] args){
JTextFieldSample sample = new JTextFieldSample();
sample.initialize();
}
}
***演習13.1をやってください [#xc59c932]
このプログラムに、右のテキストフィールドをクリアするclear...
こんなのをつくってください。
http://gyazo.com/999f1e766551a994186cc3d159bde0bf.png
BorderLayoutでもできるようですが、私はGridLayour使ってみ...
panel.setLayout(new GridLayout(2,2));
panel.add(textleft);
panel.add(textright);
panel.add(button);
panel.add(clearbutton);
ボタンが複数になるので、ActionPerformedの中で、ボタンを区...
//演習ができそうにないという人は、飛ばして、次に進んでく...
解答例(コンストラクタで作る)
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class JTextFieldSample extends JFrame implements ...
JButton button, clearButton;
JTextField textleft, textright;
JTextFieldSample(String title) {
setTitle(title);
button = new JButton("left to right");
clearButton = new JButton("clear");
button.addActionListener(this);
clearButton.addActionListener(this);
textleft = new JTextField(10);
textright = new JTextField(10);
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(2,2));
panel.add(textleft);
panel.add(textright);
panel.add(button);
panel.add(clearButton);
Container container=this.getContentPane();
container.add(panel);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==(button)) {
textright.setText(textleft.getText());
textleft.setText("");
}else if(e.getSource()==(clearButton)) {
textright.setText("");
}
}
public static void main(String[] args) {
JTextFieldSample sample = new JTextFieldSample("JTextF...
sample.pack();
sample.setVisible(true);
sample.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
解答例(初期化メソッドで作る)
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class JTextFieldSample extends JFrame implements ...
JButton button, clearButton;
JTextField textleft, textright;
public void initialize() {
button = new JButton("left to right");
button.addActionListener(this);
clearButton = new JButton("clear");
clearButton.addActionListener(this);
textleft= new JTextField(10);
textright= new JTextField(10);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,2));
panel.add(textleft);
panel.add(textright);
panel.add(button);
panel.add(clearButton);
this.getContentPane().add(panel);
this.setTitle("JTextFieldSample");
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
if( e.getSource() == button) {
textright.setText(textleft.getText());
textleft.setText("");
}else{
textright.setText("");
}
}
public static void main(String[] args){
JTextFieldSample sample = new JTextFieldSample();
sample.initialize();
}
}
***どのボタンからのイベントであるかを識別する方法 [#i076d...
action Performed (Action Event e) の中で、
-e.get Source()してButtonのインスタンスを得て比較する
-e.get Action Command()でアクションを得て文字比較する
--あらかじめbutton.set Action(”アクション名")しておく
-ボタンからget Textしてボタンの文字列を得て文字比較する
--get Sourceで得られるのはボタンの親クラスなのでButtonに...
System.out.println((JButton)(e.getSource()).getText());
***13.4節を読んで、プログラム13.4を実行してください [#ca7...
JListの型を指定しないとコンパイラの警告が出ます。警告を出...
JList<String> list = new JList<String>(data);
***提出 [#ge1f31d6]
プログラム13.4のjava, classを、いつものように学籍番号+ロ...
***13.5節を読んで,プログラム13.5を実行してください [#o61...
http://gyazo.com/dd4e103c011682b3a78b9ed0c8d5134b.png
http://gyazo.com/4755cce7280963b32050db455d265cc1.png
メニューアイテムにcommandという情報をつけて、ActionPerfor...
***演習13.2をやってください(メニュー項目は何でも良いです...
演習ができそうにないという人は、飛ばして、次に進んでくだ...
http://gyazo.com/2d9c3b6534e7b87fcd3ec22be00d5fed.png
新しいメニューも追加してみてください。例えば、payment、ca...
***13.6節を読んで,プログラム13.6を実行してください [#k36...
教科書203ページのプログラム13.6の5行めのところに、
... implements ActionListener6: {
とありますが、これは、
... implements ActionListener {
の間違いのようです。
**2018年12月20日 [#e1b62f01]
**終章 おまけ [#s65aaa02]
***マウスイベント [#cc8c3961]
マウスイベントを受け取るには、Mouse ListenerやMouse Motio...
以下のようにするとイベントをうけとれるます。
まずはMouse Motion Listenerを試してみましょう。
マニュアル
- https://docs.oracle.com/javase/jp/8/docs/api/java/awt/e...
によると、実装しないといけないメソッドはmouse Draggedとmo...
- void mouseDragged(MouseEvent e)
コンポーネント上でマウス・ボタンを押してドラッグすると呼...
- void mouseMoved(MouseEvent e)
ボタンを押さずにマウス・カーソルをコンポーネント上に移動...
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MouseTest extends JFrame implements MouseMo...
public void mouseDragged(MouseEvent e) {
System.out.println("mouse dragged!");
}
public void mouseMoved(MouseEvent e) {
System.out.println("mouse moved!");
}
public static void main(String[] args) {
MouseTest test = new MouseTest();
test.setTitle("MouseTest");
test.addMouseMotionListener(test);
test.setSize(400,300);
test.setVisible(true);
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
次に、Mouse Listenerも実装してみましょう。マニュアル
- https://docs.oracle.com/javase/jp/7/api/java/awt/event/...
によると、
- void mouseClicked(MouseEvent e)
コンポーネント上でマウスボタンをクリック (押してから離す)...
- void mouseEntered(MouseEvent e)
コンポーネントにマウスが入ると呼び出されます。
- void mouseExited(MouseEvent e)
コンポーネントからマウスが出ると呼び出されます。
- void mousePressed(MouseEvent e)
コンポーネント上でマウスボタンが押されると呼び出されます。
- void mouseReleased(MouseEvent e)
コンポーネント上でマウスボタンが離されると呼び出されます。
これを追加します。宣言で
public class MouseTest extends JFrame implements MouseLi...
として、またmainに
test.addMouseListener(test);
を追加します。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MouseTest extends JFrame implements MouseLi...
public void mouseClicked(MouseEvent e) {
System.out.println("mouse clicked!");
}
public void mouseEntered(MouseEvent e) {
System.out.println("mouse entered!");
}
public void mouseExited(MouseEvent e) {
System.out.println("mouse exited!");
}
public void mousePressed(MouseEvent e) {
System.out.println("mouse pressed!");
}
public void mouseReleased(MouseEvent e) {
System.out.println("mouse released!");
}
public void mouseDragged(MouseEvent e) {
System.out.println("mouse dragged!");
}
public void mouseMoved(MouseEvent e) {
System.out.println("mouse moved!");
}
public static void main(String[] args) {
MouseTest test = new MouseTest();
test.setTitle("MouseTest");
test.addMouseListener(test);
test.addMouseMotionListener(test);
test.setSize(400,300);
test.setVisible(true);
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
*** 線を引く簡単なプログラム [#y4c3a992]
JPanelのサブクラスを作りました。
import javax.swing.JPanel;
import java.awt.Graphics;
public class DrawPanel extends JPanel {
public void drawLine(int x1, int y1, int x2, int y2){
Graphics g = this.getGraphics();
g.drawLine(x1, y1, x2, y2);
}
}
こちらはメインのプログラム。JFrameのサブクラスで、これに...
リスナーになっているので、こちらでマウスなどのイベントを...
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
public class SimpleDraw extends JFrame implements MouseM...
int lastx=0, lasty=0, newx, newy;
DrawPanel panel;
public void mouseMoved(MouseEvent arg0) {
}
public void mouseDragged(MouseEvent arg0) {
newx=arg0.getX();
newy=arg0.getY();
panel.drawLine(lastx,lasty,newx,newy);
lastx=newx;
lasty=newy;
}
private void init() {
this.setTitle("Simple Draw");
this.setSize(300, 200);
this.addMouseMotionListener(this);
panel=new DrawPanel();
this.getContentPane().add(panel);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SimpleDraw frame=new SimpleDraw();
frame.init();
}
}
***Eclipseを使ってみよう [#vf7b5de5]
http://gyazo.com/4383db7fb81f9eacbf5cc959ff77a33d.png
-Eclipseの警告を消す方法
private static final long serialVersionUID = 42L;
という変数を定義しておきます。
---------------
**欠席状況 [#tfa637d9]
3/4以上出席してください。(欠席は3回まで)欠席4回で自動的...
欠席3回以下なら不可にはなりませんが、成績が下がるかもしれ...
(病欠、公欠、忌引などは0になっているはずですが間違ってい...
|学籍番号|10/4|10/11|10/25|11/8|11/15|11/22|11/29|12/6|12...
|1720501|0|0|0|0|0|0|0|0|0|0|0|0|
|1720502|0|0|0|0|0|0|0|0|0|0|0|0|
|1720503|0|0|0|0|0|0|0|0|0|0|0|0|
|1720504|0|0|0|0|0|0|0|0|0|0|0|0|
|1720505|0|0|0|0|0|0|0|0|0|0|0|0|
|1720506|0|0|0|0|0|0|0|0|0|0|0|0|
|1720507|0|0|0|0|0|0|0|0|0|0|0|0|
|1720508|0|1|0|0|0|0|0|0|0|0|0|1|
|1720509|0|0|0|0|0|0|0|0|0|0|0|0|
|1720510|0|0|0|0|0|0|0|0|0|0|0|0|
|1720511|0|0|1|0|0|1|0|1|0|0|0|3|
|1720512|0|0|0|0|0|0|0|0|0|0|0|0|
|1720513|0|0|0|0|0|0|0|0|0|0|0|0|
|1720514|0|0|0|0|0|0|0|0|0|1|0|1|
|1720515|0|0|0|0|0|0|0|0|0|0|0|0|
|1720516|0|0|0|0|0|0|0|0|0|0|0|0|
|1720517|0|0|0|0|0|0|0|0|0|0|0|0|
|1720518|0|0|0|0|0|0|0|0|0|0|0|0|
|1720519|0|0|0|0|0|1|0|0|0|0|0|1|
|1720520|0|0|0|0|0|0|0|0|0|0|0|0|
|1720521|1|0|0|0|0|1|0|0|0|1|0|3|
|1720522|0|0|0|0|0|0|0|0|0|0|0|0|
|1720523|0|0|0|0|0|0|0|0|0|0|0|0|
|1720524|0|0|0|0|0|0|0|0|0|0|0|0|
|1720525|0|0|0|0|0|0|0|0|0|0|0|0|
|1720526|0|0|0|0|0|0|0|0|0|1|0|1|
|1720527|0|0|0|0|1|0|0|0|0|0|0|1|
|1720528|0|0|0|0|0|1|0|0|0|0|1|2|
|1720529|0|0|0|0|0|0|0|0|0|0|1|1|
|1720530|1|0|0|0|0|1|0|0|1|1|0|4|
|1720531|0|0|0|0|0|1|0|0|0|0|0|1|
|1720532|0|0|0|0|0|0|0|0|0|0|0|0|
|1720533|0|0|0|0|0|0|0|0|0|0|0|0|
|1720534|0|0|0|0|0|1|0|0|0|0|0|1|
|1720535|0|0|0|0|0|0|0|0|0|0|0|0|
|1720536|0|0|0|0|0|1|0|0|1|0|0|2|
|1720537|0|0|0|0|0|0|0|0|0|0|0|0|
|1720538|0|0|0|0|0|0|0|0|0|0|0|0|
|1720539|0|0|0|0|0|0|0|0|0|0|1|1|
|1720540|0|0|0|0|0|1|0|0|0|0|0|1|
|1720541|0|0|0|0|0|0|0|0|0|0|0|0|
|1720542|0|0|0|0|0|0|0|0|0|0|0|0|
|1720543|0|0|0|0|0|0|0|0|0|0|0|0|
|1620514|1|1|1|1|1|1|1|1|1|1|1|11|
|1520520|0|1|0|0|1|0|0|0|1|0|0|3|
|1740665|0|0|0|0|0|0|0|0|0|0|0|0|
*集中演習「ヒューマンインタフェース」出題範囲 (2019年1月...
教科書の3.5節を読んで、
ユーザモデルとデザインモデル(設計者のモデル)について理...
この部分を授業で説明した資料を以下に置いておきます。
- https://www.dropbox.com/s/q4zhn205vrvyfgr/forexam2018.p...
皆さんは、自分が作ったプログラムを人に使ってもらった時に、
思いもしないようなバグを発見してもらった経験がありますで...
他人は、
プログラムを作った自分だったら絶対に行わないような操作を...
そこで、
- 製品になって人々が使うようになってから発覚するプログラ...
- 多くの人々が使う機械の誤操作や故障を引き起こしてしまう...
を設計者、開発者が排除できない原因について考えておいてく...
*大学院HCI演習および人間機械系演習 2018年度後期 [#r13a4a15]
**講義予定 [#ab05a7eb]
10月30日の福地先生講義は延期になり、通常授業になります。
-10月9日ガイダンス
-10月16日休講
-10月23日
-10月30日
-11月6日
-11月13日
-11月20日[[明治大学福地先生:https://www.meiji.ac.jp/ams/p...
-11月27日
-12月4日
-12月11日
-12月18日
-12月25日
-1月8日
-1月15日
-1月22日
//レポート提出者一覧(2017/2/10 12:00現在)
**発表の記録 [#m6c7145e]
学籍番号
1840702
1840706
1840708
1840709
1840710
1840644 (聴講)
1840645 2018年11月6日
1840648
1840649 2018年11月6日
1840651
1840655
1840658
1840659
1840661
1840662
1840663
1840665
1840669
1840673 2018年11月6日
1840675
1840677
1740671
------
このページについてのお問い合わせはsiio@is.ocha.ac.jpまで。
終了行:
[[Lecture]]
//#contents
*ヒューマンインタフェース 2018年前期 [#xbc26b1a]
**ヒューマンインタフェースのレポート [#fa42ea61]
提出は任意です.もし良いレポートを提出いただけたら出席点...
-締め切り2018年8月31日金曜日
-形式分量:A4, ページ数は1-3ページ程度
-提出先・提出方法:PDFにしてsiio@is.ocha.ac.jpまでメール...
メールの標題は「ヒューマンインタフェースレポート: 16205XX...
提出いただいた方はこのページでお知らせします。提出してし...
(提出を確認出来るよう締め切りより早めに提出していただくこ...
提出状況は、この下に、学籍番号と受理日で案内します。
もし、学籍番号が公表されたくない場合は、確認用の秘密の仮...
学籍番号の代わりにその名前を使います。
|学籍番号|受理日|
|1620415|2018年8月|
|1620504|2018年8月|
|1620515|2018年8月|
|1620520|2018年8月|
|1620525|2018年8月|
|1620535|2018年8月|
|1620537|2018年8月|
|1620542|2018年8月|
|1620560|2018年8月|
(2018年9月2日現在)
***レポートの課題 [#c9d0add0]
-身の回りの携帯機器、家電製品、機械製品、コンピュータソフ...
-そして、それがなぜ使いにくいのかを、 授業で説明した、 制...
-また,自分ならこのように設計して使いやすくするというアイ...
**出席状況 [#te5cda59]
学部「ヒューマンインタフェース」は出席重視の授業です.そ...
|学籍番号|4月12日|4月19日|5月17日|5月24日|5月31日|6月7日|...
|1620415|出|出|欠|出|出|欠|欠|欠|出|出|出|出|出|4不可|
|1620501|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620503|出|出|出|出|出|出|出|出|出|出|出|欠|出|1|
|1620504|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620505|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620506|出|出|出|欠|出|出|出|出|出|出|出|出|出|1|
|1620507|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620508|出|欠|出|出|出|出|出|欠|出|欠|出|出|出|3|
|1620509|出|出|出|出|出|出|出|出|出|出|出|出|欠|1|
|1620510|出|出|出|出|出|出|出|出|欠|出|出|出|出|1|
|1620512|出|出|出|欠|出|出|出|出|出|出|出|出|出|1|
|1620513|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620514|出|出|出|欠|出|出|出|欠|欠|欠|欠|欠|欠|7不可|
|1620515|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620516|出|出|出|出|出|欠|出|出|欠|出|出|出|出|2|
|1620517|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620518|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620519|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620520|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620521|出|出|出|欠|出|出|出|欠|出|出|出|出|出|2|
|1620523|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620524|出|出|出|出|出|出|欠|出|出|出|欠|欠|出|3|
|1620525|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620526|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620527|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620528|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620529|欠|欠|欠|欠|欠|欠|欠|欠|欠|欠|欠|欠|欠|13不可|
|1620532|出|出|出|出|出|欠|出|出|出|出|出|出|出|1|
|1620533|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620534|出|出|出|出|欠|出|出|出|欠|出|出|欠|出|3|
|1620535|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620536|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620537|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620538|欠|欠|欠|出|欠|欠|欠|欠|欠|欠|欠|欠|欠|12不可|
|1620539|出|出|出|出|出|欠|出|出|欠|出|出|出|出|1|
|1620540|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
|1620541|出|出|出|出|出|欠|出|出|出|出|出|欠|出|1|
|1620542|出|出|出|出|出|出|出|出|出|出|出|出|出|0|
** 講義開催予定 [#b3cac191]
-4/12
-4/19
-4/26 休講
-5/10 休講
-5/17
-5/24
-5/31
-6/7
-6/14
-6/21
-6/28
-7/5
-7/12
-7/19
-7/26
-8/2 試験週間のため授業はありません
**宿題 [#c73b3aac]
下のリンク先のソースコードをコンパイルして、応答速度を図...
http://is.ocha.ac.jp/~siio/index.php?CSL11HCI#k497ebbd
**宿題 [#x69779a5]
***GUI黎明期のPC性能を調べてください(2018.4.19) [#ba9db6ff]
-GUI黎明期PCのCPU名、CPUクロック、メモリ容量、画素数を調...
--現在,Windows を使っている人は,最初の Windows が出荷され...
--Mac OS Xを使っている人は,1984に出荷された最初の Macinto...
-今あなたが使っているコンピュータと比較してください.
-次回の授業(5/17)最初に配布するA5サイズの用紙に各自で記入...
//**宿題
//
//***人の反応速度を測定するプログラムを作って測定してくだ...
//-連休明けの授業(5/15)の開始時に、A4, 1枚(両面印刷でも可...
//--用紙の上辺に学籍番号、学年、氏名を1行で書いておいてく...
//-C 言語では,次のようなプログラムで、”hit now”という文字...
//--http://is.ocha.ac.jp/~siio/hci/hitnow.c
//--このプログラムは固定時間(5秒)後にhit nowが表示され...
//-これによりあなたの応答速度を複数回実測して、人の応答速...
//-また個人差や年齢などで結果は変わるかもしれません。周り...
//-また何度も測定することで、習熟して速度が向上したり、そ...
//--そのような現象が観察できたら、これも報告してください...
**教科書 [#ta8dbb5f]
http://ec2.images-amazon.com/images/I/51SsP4P1UiL._SL500_...
http://www.amazon.co.jp/dp/4781912605/
**授業資料 [#s6bf1fc3]
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c1...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c2...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c3...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c4...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c5...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c6...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c7...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c8...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c9...
+http://is.ocha.ac.jp/~siio/lecture/humaninterface/HCI_c1...
(授業開始直前や直後に差し替えされている可能性があります。)
**教科書サポートページ [#b385f64d]
-http://is.ocha.ac.jp/~siio/index.php?CSL11HCI
//**宿題:ボタンを押すたびに点灯/消灯を繰り返す(トグル...
//
//以下は、Arduinoの2ピンに接続された押しボタンスイッチを...
//ちなみにHIGHとLOWはintの値で、int型の変数で保存すること...
//
// int outpin=13; //An LED is connected to ping 13
// int inpin=2; //A switch is connected to pin 2
//
// void setup() {
// // initialize the digital pin as an output and input.
// pinMode(outpin, OUTPUT);
// pinMode(inpin, INPUT);
// }
//
// void loop() {
// if ( digitalRead(inpin) == HIGH) {
// digitalWrite(outpin, LOW); // set the LED on
// }
// else {
// digitalWrite(outpin, HIGH); // set the LED off
// }
// delay(30); // wait for 30 msecond
// }
//**宿題:人の反応速度を測定するプログラムを作って測定し...
//-連休明けの授業(5/8)の開始時に、A5, 1枚に書いて提出して...
//-C 言語では,次のようなプログラムで、”hit now”という文字...
//--http://is.ocha.ac.jp/~siio/hci/hitnow.c
//--このプログラムは固定時間(5秒)後にhit nowが表示され...
//-- 乱数を使って表示までの時間を変える改良をしてもらって...
//-これによりあなたの応答速度を実測して、人の応答速度が 3...
//
//
*マルチメディアプログラミング実習 2018年度後期 [#s6662b38]
**最終課題提出状況(2019/2/5 10時12分現在) [#o10c278c]
これで締め切りとします。タイムスタンプとサイズを確認して...
//g1520520 2015 142K 2 4 10:59 1520520suzukiaki13.zip
// g1720501 2017 992K 2 3 20:02 1720501akiyamahinano...
// g1720502 2017 758K 2 1 21:19 1720502iinosaki12.zip
// g1720503 2017 461K 2 1 20:11 1720503IshijimaMisak...
// g1720504 2017 1.2M 2 3 22:13 1720504manaishida_fi...
// g1720505 2017 1.0M 2 4 10:27 1720505itomika.zip
// g1720506 2017 2.9M 1 30 09:57 1720506enta.zip
// g1720507 2017 116K 2 2 14:44 1720507otaniyumi.zip
// g1720507 2017 122K 2 2 14:46 1720507otaniyumi01.zip
// g1720508 2017 770K 1 31 16:04 1720508_OgasawaraNod...
// g1720509 2017 326K 1 31 14:08 1720509ogawasawako.zip
// g1720511 2017 382K 2 3 23:44 1720511KawanishiMami...
// g1720512 2017 416K 2 3 14:01 1720512Kimura.zip
// g1720513 2017 98K 2 4 18:37 1720513kusuhata.zip
// g1720514 2017 452K 2 3 20:36 1720514goto.zip
// g1720515 2017 3.2K 2 3 20:50 1720515sakatayurie.zip
// g1720517 2017 1.5M 2 1 17:40 1720517 satonanami.zip
// g1720519 2017 3.7M 1 29 15:36 1720519shimizugawa.zip
// g1720520 2017 7.3M 2 3 16:36 1720520shinakane.zip
// g1720521 2017 237K 2 3 20:58 1720521JinnoRiko.zip
// g1720522 2017 137K 2 4 11:45 1720522suzukiharuka....
// g1720524 2017 2.1M 2 4 10:23 1720523.zip
// g1720524 2017 1.0M 2 4 10:23 1720524.zip
// g1720525 2017 1.7M 2 3 21:54 1720525takanosaki.zip
// g1720527 2017 766K 2 4 12:03 1720527 Taguchi Haru...
// g1720528 2017 215K 2 2 18:52 1720528Tsuruoka01.zip
// g1720528 2017 775K 2 4 11:57 1720528Tsuruoka02.zip
// g1720529 2017 537K 2 2 17:44 1720529toriyamanamik...
// g1720530 2017 101K 2 4 11:21 1720530nakato0204.zip
// g1720531 2017 217K 2 3 20:46 1720531HagaTomoe_Sim...
// g1720532 2017 60K 2 4 11:49 1720532hayashidarika...
// g1720533 2017 432K 1 28 15:32 1720533haradahonoka....
// g1720534 2017 9.6M 2 4 12:03 1720534BitohKana.zip
// g1720534 2017 9.6M 2 4 12:21 1720534BitohKana02.zip
// g1720535 2017 264K 1 31 23:03 1720535hiroeayano_la...
// g1720536 2017 147K 2 3 20:12 1720536fukayashiho.zip
// g1720537 2017 821K 1 29 14:58 1720537fujiimaika.zip
// g1720538 2017 1.0M 2 3 21:18 1720538hondakaholhw....
// g1720538 2017 1.0M 2 3 21:50 1720538hondakaho完成...
// g1720539 2017 138K 2 3 23:23 1720539tatsushita.zip
// g1720540 2017 780K 2 2 22:26 1720540RunaMatsumoto...
// g1720540 2017 780K 2 2 22:20 1720540RunaMtsumoto1...
// g1720541 2017 204K 2 4 11:38 1720541MurakamiAyana...
// g1720541 2017 214K 2 4 11:43 1720541MurakamiAyana...
// g1720542 2017 600K 2 3 15:53 1720542YutaniAyaka.zip
// g1720542 2017 600K 2 3 15:58 1720542YutaniAyaka03...
// g1720543 2017 8.5M 2 4 10:26 1720543_watanabe.zip
// g1740665 2013 882K 2 4 11:34 1740665minakawaakiko...
// g1740665 2013 881K 2 4 11:52 1740665minakawaakiko...
// g1720510 2017 17M 2 3 14:37 g1720510oritayukimiS...
// g1720516 2017 2.0M 2 4 08:48 g1720516momosasaki.zip
// g1720526 2017 175K 2 3 13:45 g1720526SimpleDraw.zip
**出席表明アプリケーション [#s026a135]
- http://is.ocha.ac.jp/~siio/IamAttending.zip
#ref(http://is.ocha.ac.jp/~siio/gyazo/b1128c100d39263a848...
- 初めて起動する時は、右クリックして、「開く」ボタンを選...
**2019年1月10日 [#e1b62f01]
***今後の予定 [#de7840d4]
-1月10日(実質最後の授業)
-1月17日(海外出張で自習。演習室は公開します。TAが待機し...
-1月24日 (補講・試験期間のため授業なし。自習。演習室は公...
***Eclipseを使ってみよう [#b72bb1ca]
http://gyazo.com/4383db7fb81f9eacbf5cc959ff77a33d.png
-Eclipseの警告を消す方法
private static final long serialVersionUID = 42L;
という変数を定義しておきます。
***一筆書き解消 [#v227383f]
上で紹介したSimple Drawを、一筆書きにならないように変更し...
***ずれの解消 [#ded1cc80]
ポインタ位置と描画位置がずれる問題を解決してください。
***今後の課題 [#l55762c0]
こちらに続きを書いてあります。これを見ながら改良を進めて...
http://is.ocha.ac.jp/~siio/index.php?SimpleDraw
*マルチメディアプログラミングの最終課題 [#fa431919]
-課題:お絵描きプログラムを作成してさらに取扱説明書を作成...
--この課題のヒントは SimpleDraw をみてください。
** 提出課題として最低やってほしいこと [#hd791dc3]
-ペンの太さをメニューで変えられるようにしてください
-ペンの色をメニューとカラーパレットで変えられるようにして...
-消しゴム機能を追加してください
-ウィンドウの大きさを変えても絵が消えてしまわないようにする
(ダブルバッファを使う)
** 機能拡張:以下のことができれば加点します [#ibf935ab]
-絵や写真のファイルを取り込めるようにする
-いろいろな効果のペンを作る(たとえばペンの動きに従って文...
-絵をファイルへ書き出す機能を作る
-他の絵データをスタンプのように押す機能
-コピーアンドペースト
-メニューバーだけでなく、スライダ、ボタン、別ウィンドウ(...
-そのほか、世の中のお絵描きプログラムにありそうな機能を実...
機能拡張の詳細はSimpleDrawの
-http://is.ocha.ac.jp/~siio/index.php?SimpleDraw#extra
を見てください。SimpleDrawのページでは、
-機能の拡充
-使いやすさの追求
の2通りの拡張を書いてあります。どちらの方針で進めていただ...
説明書に、工夫したところを書いておいてください。
** 取扱説明書の作り方 [#j3398d0e]
-ApplicationsからMicrosoft Office 2011/Microsoft Wordもし...
-せっかくですので作った機能はぜんぶここで説明してください...
-スクリーンキャプチャした図も入れてください。図は次のよう...
--スクリーンキャプチャしたいところで、コマンド(リンゴマ...
--もしくは、コマンド(リンゴマーク)+シフト+4を押すとマ...
--もしくは、コマンド(リンゴマーク)+シフト+4を押し、さ...
--以上の操作で、デスクトップにピクチャファイルができます...
--もしくは、デスクトップのピクチャファイルをダブルクリッ...
-Control キーを押しながらキーボードショートカットを押すと...
-がんばったところ、大変だったところなどを書いていただいて...
** 出来上がったプログラムの提出方法 [#i421b017]
- フォルダを作ってその中にjavaファイルとclassファイルと、...
-このフォルダに名前を付けてください。フォルダの名前は、「...
-このフォルダを圧縮してください
-このフォルダを圧縮してください
-圧縮したファイルを
/home/isstaff/siio/Public/Drop Box/.
に提出してください。ターミナル.appからなら
cp 123456siioitiro.zip /home/isstaff/siio/Public/Drop\ Box
としてください。ファインダーからなら、メニューから「移動...
以下のように入力して、移動ボタンを押して、そこに現れるド...
http://is.ocha.ac.jp/~siio/gyazo/dropbox.png
--書き込み専用なので確認できないけどokですかという意味の...
-レポート提出用フォルダは書き込み専用で見ることができませ...
-同じ名前のフォルダを投げ込むと、エラーになります。という...
** 締切 [#sc18de64]
-締め切りは2019年2月4日11:59am(正午)とします
--この日までに提出してください
//--どうしてもそのあともがんばりたい人は1月31日の11:59pm...
//--可能な限り差し替えます(見落とす可能性がありますので...
**以前の優秀作品例 [#t2007b9e]
-http://is.ocha.ac.jp/~siio/pdf/2013/manual1.pdf
-http://is.ocha.ac.jp/~siio/pdf/2013/manual2.pdf
-http://is.ocha.ac.jp/~siio/pdf/2013/manual3.pdf
-http://is.ocha.ac.jp/~siio/pdf/2013/manual4.pdf
-http://is.ocha.ac.jp/~siio/pdf/2013/manual5.pdf
------------
**講義予定 [#ab05a7eb]
-10月4日ガイダンス
-10月11日
-10月18日休講
-10月25日
-11月1日休講
-11月8日
-11月15日
-11月22日
-11月29日
-12月6日
-12月13日
-12月20日
-12月27日
-1月10日(実質最後の授業)
-1月17日(自習。演習室は公開します。TAが待機します。出欠...
-1月24日 (補講・試験期間のため授業なし。必要ならば演習室...
**javaのマニュアル [#beafbfad]
//http://sdc.sun.co.jp/java/docs/j2se/1.5.0/ja/docs/ja/ap...
//http://java.sun.com/javase/ja/6/docs/ja/api/index.html
//http://java.sun.com/j2se/1.5.0/ja/docs/ja/api/index.html
//http://docs.oracle.com/javase/jp/6/api/
http://docs.oracle.com/javase/jp/8/docs/api/index.html
** 出来上がったプログラムの提出方法 [#bd9cbbf8]
- フォルダを作ってその中にjavaファイルとclassファイル
//と、取扱説明書ファイルと、それ以外に必要なファイルがも...
を入れてください。
フォルダの中のclassファイルをダブルクリックしたらプログラ...
-このフォルダに名前を付けてください。フォルダの名前は、「...
-このフォルダを圧縮してください
--フォルダを選択してファイルメニューから圧縮を選択します
-圧縮したファイルを以下の手順で
/home/isstaff/siio/Public/Drop Box/.
に提出してください。ターミナル.appからなら
cp 123456siioitiro.zip /home/isstaff/siio/Public/Drop\ Box
としてください。ファインダーからなら、メニューから「移動...
以下のように入力して、移動ボタンを押して、そこに現れるド...
http://is.ocha.ac.jp/~siio/gyazo/dropbox.png
--書き込み専用なので確認できないけどokですかという意味の...
-レポート提出用フォルダは書き込み専用で見ることができませ...
-授業中でしたら、[[ココを見ると:http://is.ocha.ac.jp/~sii...
-同じ名前のフォルダを投げ込むと、エラーになります。という...
***教科書 [#a7e1ce26]
http://gyazo.com/de3288074dae1c75f6df4ef3c0b9b3d4.png
http://www.amazon.co.jp/dp/4883732258/
買ってください。もしくは、先輩から安く譲ってもらってくだ...
*** この講義の目的 [#l5592b29]
+Javaでプログラムする
+オブジェクト指向の概念を理解してプログラミングする
+GUIプログラミングをする
*** この講義の順序 [#gcf48d66]
+Javaになれる(C言語などのプログラミング手法の復習)
+オブジェクト指向について理解する
+GUIプログラミングについて理解する(イベント駆動)
+お絵描きプログラムを作ってみる
*** 成績評価 [#c732dbb9]
+お絵描きプログラムの完成度,作り込み
+毎回の宿題の達成(参考程度)
+出席状況(参考程度)
**今学期の授業(終了分) [#od53d56c]
**第1章および第2章 [#y3ae1beb]
*** terminalを起動する [#ia8beba9]
//#ref(How2Java/terminal.png)
http://is.ocha.ac.jp/~siio/gyazo/7366bfab668207c6598c4d88...
- terminalは、/Applications/Utilities/の中にあります。
ちなみに、/Applicationsはファインダでは/アプリケーション...
/Applications/Utilities/は、/アプリケーション/ユーティリ...
- ダブルクリックすると起動します。
よく使うことになると思いますので、dockにドラッグアンドド...
登録しておくと良いかと思います。
- ターミナルから、javacとタイプしてみてください。Javaがす...
オプションの説明が日本語で出てくると思います。
***おすすめテキストエディタCotEditor[#c7258b9c]
https://coteditor.com/img/appicon/128@2x.png
- Javaのプログラムを作るテキストエディタです。一番簡単に...
エディタを呼び出せば良いです。
- でも日本語の設定などが結構難しいので、GUIベースのエディ...
- いくつかありますが、おすすめの一つはCotEditorという、便...
- これも便利なのでdockに入れておくとよいと思います。
こちらからダウンロードできます。
演習室のOSにあわせたバージョンをダウンロードして~/Applica...
https://coteditor.com/archives.ja
*** 超簡単なプログラム(hello world)を作ってみる [#v4ccc293]
- ターミナルから、vi Hello.javaとかemacs Hello.javaとかpi...
もしくは、cotEditerを起動して作成します。
- ここで、以下のようなプログラムを書いてみます。
class Hello {
public static void main (String args[]) {
System.out.println("hello java world!");
}
}
http://is.ocha.ac.jp/~siio/gyazo/20121004010107.png
- これをHello.javaという名前で保存して、コンパイル実行し...
javac Hello.java (コンパイルする)
java Hello (実行する。.javaなどの拡張子は不要)
hello java world! (結果)
- 次に簡単なウィンドウを出してみましょう。
授業の最後の方で紹介する,Swingというフレームワークを使っ...
import javax.swing.JFrame;
public class SimpleWindow {
public static void main(String argv[]) {
JFrame f = new JFrame("私が作った最初の窓...
f.setSize(200,100);
// f.setDefaultCloseOperation(JFrame.EXIT_...
f.setVisible(true);
}
}
これをSimpleWindow.javaという名前で保存して、
javac SimpleWindow.java
java SimpleWindow
とタイプしてコンパイル/実行します。
このプログラムは,ウィンドウのクローズボタンを押しても終...
プログラムを停止するには,ターミナルでコントロール-cを押...
#ref(How2Java/simplewindow.png)
**第3章 [#xc22f04b]
-演習1
--演習3.4をみて、自分の名前の最初の文字の文字コードを表示...
-演習2
--コマンドの引数はarg[0], arg[1] ... などにString型の配列...
--二つの引数を与えたときに、それが+でつないで表示されるプ...
http://gyazo.com/8159f78165e17781a7110de3763c833c.png
ヒント
--以下は引数一つを表示するだけのサンプルです。これをもと...
--arg[0]とarg[1]をprintlnの中で+でつないで表示すれば良い...
class ArgsTest {
public static void main (String args[]) {
System.out.println(args[0]);
}
}
解答
class ArgsTest {
public static void main (String args[]) {
System.out.println(args[0] + " + " + args[1]);
}
}
**第4章 [#f2e95643]
--演習4.2をやってみよう
**第5章 [#p54c6568]
***演習 [#leda55b3]
-演習問題5.4(変更)
乱数を10個表示する
public class Score {
public static void main (String argv[]) {
int i,a;
for(i=0;i<10;i++) {
a=(int)(Math.random() * 100);
System.out.println(a);
}
}
}
次にこの乱数を点数とみなして、演習問題5.4の基準に従ってAB...
動作例を以下に示す。
http://gyazo.com/829b04a7fc82cdfe9dd0dfa650af873e.png
解答例:
public class Score {
public static void main (String argv[]) {
int i,a;
for(i=0;i<10;i++) {
a=(int)(Math.random() * 100);
System.out.print(a + " ");
if(a<40) System.out.println("D");
else if(a<60) System.out.println("C");
else if(a<80) System.out.println("B");
else System.out.println("A");
}
}
}
-演習問題5.5をやってみよう
http://gyazo.com/1733defca0c709c41c69ea729320ab61.png
解答例:
class Kinri {
public static void main (String args[]) {
double okane=100000;
int year;
year=1;
while(okane < 200000) {
okane = okane * 1.05;
System.out.println("year = " + year + " okane= " + ok...
year++;
}
}
}
現在の普通預金の金利0.001%だと倍になるのに何年かかるだろ...
//http://gyazo.com/95cd94db39b407e7961355b20da8fc67.png
-演習5.6をやってみよう
while文をfor文に変えてみる
解答例:
class Kinri {
public static void main (String args[]) {
double okane=100000;
int year;
for(year=1;okane < 200000; year++) {
okane = okane * 1.05;
System.out.println("year = " + year + " okane= " + ok...
}
}
}
***for-each文は新しい手法なので練習しましょう [#s17e2f54]
-プログラム5.7の代わりに以下をやってみよう
class ArrayTest {
public static void main (String args[]) {
int[] vec = new int[3];
vec[0]=1;
vec[1]=2;
vec[2]=3;
for (int x: vec) {
System.out.println(x);
}
}
}
*** 演習 [#vc946bd9]
mainの引数argsは、Stringの配列で、コマンドラインで起動し...
コマンドの後に続けた書いた文字が入っています。
args[0], args[1], args[2] .... をすべてfor-each文で
表示するプログラムを書いてみましょう。
http://gyazo.com/8d8effac163e0dc939e74f237d8507b1.png
ヒント:for(String s: args)を使います
-解答例
class ArgsTest2 {
public static void main (String args[]) {
for(String s: args)
System.out.println(s);
}
}
-今日の課題提出
ArgsTest2.javaとArgsTest2.classを出席番号+ローマ字名前の...
**第6章 クラスの基礎 [#h5b270c6]
***クラスとインスタンスの説明をしました [#gc6def4c]
-クラスは型、インスタンスはそれから作られたもの
--クラスがたいやきの焼き型だとすると、インスタンスはそれ...
--クラスは設計図でインスタンスはそれから作られたもの
-クラスとインスタンスそれぞれにメソッドと変数がある
--クラス変数 例:何個のインスタンスを作ったか?
--クラスメソッド 例:インスタンスを作れ
--インスタンス変数 例:ひとつのたいやきの重さ
--インスタンスメソッド 例:たいやきをxxグラム食べる
http://gyazo.com/bbdd3587977a172f7fa7f00c4f5787e0.png
-演習
今作ったTestPoint3D.javaを変更して
- 二つのインスタンスpt1, pt2を作り、
- それぞれのインスタンス変数x, y, zを10,20,30と-10,-20,-3...
- それぞれのインスタンスメソッドpinrt()を呼ぶ
ようにしてください。
この結果、以下のような実行結果が出るようにしてください
http://gyazo.com/deeb78a70a724a01ce76945235d42ab8.png
***クラス変数・メソッドとインスタンス変数・メソッド [#w88...
- staticとついているのがクラス変数、クラスメソッド
- staticが付いていないのがインスタンス変数、インスタンス...
***public static void main の説明をしました [#p8e5e198]
-javaコマンドは、引数のクラスのクラスメソッドmainを実行し...
--staticと付いているのがクラス変数、クラスメソッドの印です
-Pointクラスにクラスメソッドmainを実装すれば自分自身をテ...
-クラスPoint3Dに自分自身をテストするクラスメソッドmainを...
http://gyazo.com/bdef2ab8e69f7f6e62273c2d67d7af2e.png
***変数にはメソッド経由でアクセスするのが良いという説明を...
-変数の型などを将来変更してもメソッドの書き換えで対応でき...
public class Point {
private int x, y;
void set(int newx, int newy) {x=newx; y=newy;}
int getx() { return x;}
int gety() { return y;}
void print () {
System.out.println(x + ", " + y);
}
public static void main(String argv[]) {
Point pt1= new Point();
Point pt2 = new Point();
pt1.set(10,20);
pt2.set(-pt1.getx(), -pt1.gety());
pt1.print();
pt2.print();
}
}
-Point3Dのメソッドを充実させて次のmain()メソッドで
10, 20, 30
-10, -20, -30
という結果が出るようにしましょう
public static void main(String argv[]) {
Point3D pt1 = new Point3D();
Point3D pt2 = new Point3D();
pt1.set(10, 20, 30);//インスタンス変数を...
pt2.set(-pt1.getx(), -pt1.gety(), -pt1.ge...
pt1.print();//インスタンスメソッド呼出
pt2.print();
}
-Point3Dに、他の点との距離を返すメソッド distance ( Point...
10, 20, 30
-10, -20, -30
74.83314773547883
という結果が出るようにしましょう
public static void main(String argv[]) {
Point3D pt1 = new Point3D();
Point3D pt2 = new Point3D();
pt1.set(10, 20, 30);//インスタンス変数を...
pt2.set(-pt1.getx(), -pt1.gety(), -pt1.ge...
pt1.print();//インスタンスメソッド呼出
pt2.print();
System.out.println(pt1.distance(pt2));
}
--解答例
double distance ( int ptx, int pty, int ptz ) {
int dx = ptx - this.x;
int dy = pty - this.y;
int dz = ptz - this.z;
return Math.sqrt(dx * dx + dy * dy + dz * dz);
}
double distance ( Point3D p ) {
return this.distance(p.getx(), p.gety(), p.getz());
}
-今日の課題提出
Point3D.javaとPoint3D.classを出席番号+ローマ字名前のフォ...
**2018年10月25日宿題: Osaifuクラスを作ってみよう [#ce76c...
次回は休講ですので再来週11/8の授業の最初に回収します。
-Osaifuクラスからはインスタンスがたくさん作られる
--Osaifuクラスはお財布の設計図/工場、ここから実際のお財...
--工場出荷時の残金は0円だけど、その後、いろいろな値になる...
--ということで残金はインスタンス変数とすべきだろう
-Osaifuクラスには次のメソッド、変数が必要だろう
--残金を表すインスタンス変数 int okane
--お金を入金するインスタンスメソッド void in(int x);
--お金を出金するインスタンスメソッド int out(int x); 戻...
--残金を印刷するインスタンスメソッドがあってもよいだろう ...
http://gyazo.com/bd6eaafd220dc7ff791288089f293b28.png
-Osaifuクラスをテストするmain()メソッドでは次のことをやっ...
-- Osaifuインスタンスを一つ作ってそれをsaifu1という名前に...
-- Osaifuインスタンスをもう一つ作ってそれをsaifu2という名...
--saifu1に1000円入金する
--saifu2に500円入金する
--saifu1とsaifu2が持っている金額を印刷する
--saifu1から200円出金してそれをsaifu2に入金する
--saifu1とsaifu2が持っている金額を印刷する
public static void main(String argv[]) {
Osaifu saifu1 = new Osaifu();
Osaifu saifu2 = new Osaifu();
saifu1.in(1000);
saifu2.in(500);
saifu1.print();
saifu2.print();
saifu2.in(saifu1.out(200));
saifu1.print();
saifu2.print();
}
http://gyazo.com/c618901458edc1ba338cab87d2810157.png
-Osaifu.java 解答編
public class Osaifu {
int okane;
public void in (int x) { okane += x; }
public int out(int x) { okane -= x; return x; }
public void print() {
System.out.println( "okane = " + okane +" yen");
}
public static void main(String argv[]) {
Osaifu saifu1 = new Osaifu();
Osaifu saifu2 = new Osaifu();
saifu1.in(1000);
saifu2.in(500);
saifu1.print();
saifu2.print();
saifu2.in(saifu1.out(200));
saifu1.print();
saifu2.print();
}
}
--このプログラムでは残金がマイナスになってしまってもかま...
--このためには、例えばoutメソッドを以下のようにすれば良い
public int out(int x) {
if(x < okane ) {
okane = okane -x;
return x;
} else {
int nokori = okane;
okane =0;
return nokori;
}
}
*** つぎにOsaifuクラスにコンストラクタを追加してみよう [#...
-Osaifu() で残金0のインスタンスを作る
-Osaifu(int x) で引数を残金の初期値としたインスタンスを作る
ことができるコンストラクタを作ろう。
これをmainから呼んで、上記のプログラムと同じことをするた...
Osaifu saifu1 = new Osaifu(1000);//インスタンスを作る
//最初の保持金額を1000円にする
Osaifu saifu2 = new Osaifu(500);//インスタンスを作る
//最初の保持金額を500円にする
とすることになる。
***コンストラクタ解答編 [#w62499a7]
以下のコンストラクタを作ることになる。
Osaifu() { okane = 0; }
Osaifu(int x) { okane = x; }
これは以下のように書いても良い。
Osaifu() { this(0); }
Osaifu(int x) { okane = x; }
**第8章 継承 [#ka97b6ac]
継承の話をしました。
別のクラスを継承することで、
差分だけを書いて機能を拡張していくことができます。
http://gyazo.com/2c8ef14d8be63b9fc18c58d79f2f3879.png
*** Osaifuクラスを継承してOsaifuUSDクラスを作ってみよう [...
-OsaifuUSDクラスはアメリカで買い物をするときに便利な、ア...
-あたらしく追加するメソッドは以下です
-- void inUSD(int x) xドルをお財布に入金します。このと...
-- int outUSD(int x) xドルをお財布から出金します。この...
--1ドルは90円にしてください
//-スーパークラスのメソッドを上書きするメソッドは以下です
//-- void print() お財布の残高を円とドルで表示します
-OsaifuUSDクラスをテストするmain()メソッドでは次のことを...
-- OsaifuUSDインスタンスを一つ作ってそれをsaifu1という名...
-- OsaifuUSDインスタンスをもう一つ作ってそれをsaifu2とい...
--saifu1に1000円入金する
--saifu2に5ドル入金する
--saifu1とsaifu2が持っている金額を印刷する
--saifu1から2ドル出金してそれをsaifu2に入金する
--saifu1とsaifu2が持っている金額を印刷する
-動作例
http://gyazo.com/f51ea5895aaab32bb30b9a940d91515d.png
-ヒント:一行目はこれ
public class OsaifuUSD extends Osaifu {
-ヒント:mainはこんな感じ
public static void main(String argv[]) {
OsaifuUSD saifu1= new OsaifuUSD();
OsaifuUSD saifu2=new OsaifuUSD();
saifu1.in(1000);
saifu2.inUSD(5);
saifu1.print();
saifu2.print();
saifu2.inUSD(saifu1.outUSD(2));
saifu1.print();
saifu2.print();
}
-解答例
public class OsaifuUSD extends Osaifu {
public int outUSD(int usd) {
okane-=usd * 90;
return usd;
}
public void inUSD(int usd) {
okane+=usd * 90;
}
public static void main(String argv[]) {
OsaifuUSD saifu1 = new OsaifuUSD();
OsaifuUSD saifu2 = new OsaifuUSD();
saifu1.in(1000);
saifu2.inUSD(5);
saifu1.print();
saifu2.print();
saifu2.inUSD(saifu1.outUSD(2));
saifu1.print();
saifu2.print();
}
}
*** OsaifuUSDクラスの改造(1) [#g8c0b7a2]
親のメソッドを活用しても良い
public class OsaifuUSD extends Osaifu {
public int outUSD(int usd) {
return ( out( use * 90) / 90 );
}
public void inUSD(int usd) {
in( usd * 90 );
}
…
}
親のメソッドを呼ぶことを明示的に書くためにsuper.をつかっ...
public class OsaifuUSD extends Osaifu {
public int outUSD(int usd) {
return ( super.out( use * 90) / 90 );
}
public void inUSD(int usd) {
super.in( usd * 90 );
}
…
}
***小テスト練習 [#g4c60a6e]
以下のプログラムの中で、
クラス、インスタンス、サブクラス、スーパクラス、クラスメ...
インスタンス化、継承がどこで行われているのか確認してくだ...
(importで始まる一行目はまだ説明していない内容なので小テス...
import javax.swing.JFrame;
public class SampleWindow extends JFrame {
public static void main(String args[]) {
SampleWindow w = new SampleWindow();
w.setVisible(true);
}
}
**第9章 エラーと例外処理 [#gd4f8eae]
次のプログラムを作って試してください。
引数が少ないとエラーが出るのを確認してください。
public class TestException {
public static void main(String argv[]){
System.out.println(argv[0]+" "+argv[1]);
System.out.println("Nice to meet you.");
}
}
エラーが出る可能性のある場所をtryでくくっておき、
エラーが出たらそれを捕捉する処置をcatchで指定します。
public class TestException {
public static void main(String argv[]){
try{
System.out.println(argv[0]+" "+argv[1]);
System.out.println("Nice to meet you.");
}
catch (Exception e) {
System.out.println("please input 2 words.");
}
}
}
**第10章 Stringクラスとコレクションフレームワーク [#t197...
***最初の引数(文字列)を表示するプログラムを作る。クラス...
public class TestString {
public static void main(String argv[]) {
System.out.println(argv[0]);
}
}
***演習10.1改:最初の引数(文字列)を逆に出力するプログラ...
[e100:?/Documents/java] siio% java TestString ochanomizu
ochanomizu
uzimonahco
[e100:?/Documents/java] siio%
さらには、引数がない場合は引数入力を促すことを表示してみ...
[e100:?/Documents/java] siio% java TestString
please input a word
[e100:?/Documents/java] siio%
このソースは、
public class TestString {
public static void main (String argv[]) {
try{
System.out.println(argv[0]);
int len = argv[0].length();
for(int i = len - 1; i>=0; i--) {
System.out.print(argv[0].charAt(i));
}
System.out.println();
}
catch (Exception e) {
System.out.println("please input a word");
}
}
}
である。
***Linked List の練習 [#d2a5cbd0]
サンプルプログラムを実行するときは、
LinkedList<String> list = new LinkedList<String>();
などと定義すると良い。
***program 10.2 改造 [#j2f946c0]
Alice --> Bob --> Cindy --> DaveというLinkedListをつく...
それからtoArray()メソッドでString配列を作ってfor each文で...
import java.util.*;
public class LinkedListTest{
public static void main(String[] argv) {
LinkedList<String> list = new LinkedList...
list.add("Alice");
list.add("Bob");
list.add("Dave");
list.add("Cindy");
Object[] names = list.toArray();
for(Object s: names ) System.out.println...
}
}
***Hash Mapの練習 [#jf7eb616]
プログラム10.4を参考にして、
以下のように動作する英語ー日本語単語変換プログラムを作れ。
[e100:?/Documents/java] siio% java EtoJ banana
バナナ
[e100:?/Documents/java] siio% java EtoJ apple
りんご
[e100:?/Documents/java] siio% java EtoJ
Please input an English word
ヒント:
import java.util.*;
public class EtoJ{
public static void main(String args[]) {
HashMap<String,String> map = new HashMap<String,String>...
map.put("apple","りんご");
map.put("banana","バナナ");
map.put("orange","みかん");
map.put("pineapple","パイナップル");
map.put("grape","ぶどう");
map.put("peach","もも");
map.put("melon","メロン");
map.put("lemon","レモン");
try {
System.out.println(map.get(args[0]));
}
catch(Exception e) {
System.out.println("Please input an English word");
}
}
}
- 今日の課題提出
EtoJ.javaとEtoJ.classを出席番号+ローマ字名前のフォルダに...
**第11章 入出力 [#hb3a05b8]
***一番簡単なファイル書き出し [#e97b1c07]
import java.io.*;
public class FoutTest {
public static void main(String[] args) {
try {
FileOutputStream fout = new FileOutputStream("fout.da...
fout.write(1234);
fout.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
これでfout.datという名前のファイルができあがるはずです。 ...
od -h fout.dat
または
hexdump fout.dat
してみてください
***整数を出力する例 [#j899e2e7]
import java.io.*;
public class DoutTest {
public static void main (String[] args) {
try {
FileOutputStream fout = new FileOutputStream("dout.da...
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(100);
dout.close();
}catch (Exception e) {
System.out.println(e);
}
}
}
これでdout.datという名前のファイルができあがるはずです。 ...
od -h dout.dat
または
hexdump dout.dat
してみてください
e100:java siio$ hexdump dout.dat
0000000 00 00 00 64
0000004
***整数を入出力する例 [#j899e2e7]
import java.io.*;
public class DoutTest {
public static void main (String[] args) {
try {
FileOutputStream fout = new FileOutputStream("dout.da...
DataOutputStream dout = new DataOutputStream(fout);
dout.writeInt(100);
dout.close();
FileInputStream finput = new FileInputStream("dout.da...
DataInputStream dinput = new DataInputStream(finput);
System.out.println(dinput.readInt());
dinput.close();
}catch (Exception e) {
System.out.println(e);
}
}
}
***演習11.1 をやってください [#z72d00c6]
作ったファイルを
od -h dout.dat
または
hexdump dout.dat
してみてください
解答例
import java.io.*;
public class En111 {
public static void main (String[] args) {
int i;
try {
FileOutputStream fout = new FileOutputStream ("dout.d...
DataOutputStream dout = new DataOutputStream(fout);
for(i=1;i<101;i++) dout.writeInt(i);
dout.close();
FileInputStream fin = new FileInputStream ("dout.dat");
DataInputStream din = new DataInputStream(fin);
for(i=1;i<101;i++) System.out.println(din.readInt());
din.close();
} catch (FileNotFoundException e) {
System.out.println(e);
} catch (IOException e) {
System.out.println(e);
}
}
}
***プログラム11.3をやってみてください [#h15edee7]
作ったファイルを
od -h
または
hexdump
してみてください
http://gyazo.com/74c061dfe2fcd6b72885878f867c78ba.png
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
FileWriter fwriter = new FileWriter("writer.txt");
PrintWriter pwriter = new PrintWriter(fwriter);
pwriter.println(2006);
pwriter.println("Java教科書");
//fwriter.write("Java教科書");
pwriter.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
つぎに、プログラム11.4を参考にして、
このPrint Write Testに書き足して、
書き込んだデータを読み出して画面に表示するプログラムを作...
ヒント:
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
FileWriter fwriter = new FileWriter("writer.txt");
PrintWriter pwriter = new PrintWriter(fwriter);
pwriter.println(2006);
pwriter.println("Java教科書");
//fwriter.write("Java教科書");
pwriter.close();
ここに書き足す
}
catch (IOException e) {
System.out.println(e);
}
}
}
***文字ストリームをファイルに書いて読み込むプログラム [#b...
import java.io.*;
public class PrintWriterTest{
public static void main(String[] args) {
try {
//writer.txtというファイルを作って文字を書き込む
FileWriter fwriter = new FileWriter("writer.txt");
PrintWriter pwriter = new PrintWriter(fwriter);
pwriter.println("java 教科書" + 2001 );
pwriter.close();
//writer.txtのファイルの中身をSystem.out.printlnで表示...
FileReader freader = new FileReader("writer.txt");
BufferedReader breader = new BufferedReader(freader);
String tmp;
while( (tmp=breader.readLine() ) != null) {
System.out.println(tmp);
}
breader.close();
}
catch (IOException e) {
System.out.println(e);
}
}
}
***プログラム11.5をやってこれを拡張して演習11.2をやってく...
キーボードから1行入力された文字列によるテキストファイルを...
http://gyazo.com/f9aee7f492d574f870e85e2022df374c.png
ヒント
import java.io.*;
public class En112 {
public static void main(String[] args) {
try {
ここにプログラムを書く
}
catch(IOException e) {
System.out.println(e);
}
}
}
- 今日の課題提出
「キーボードから1行入力された文字列によるテキストファイル...
- 解答例
import java.io.*;
public class En112 {
public static void main(String[] args) {
try {
InputStreamReader ireader = new InputStreamReader (Sy...
BufferedReader breaderK = new BufferedReader(ireader);
String line = breaderK.readLine();
FileWriter fwriter = new FileWriter("writer.txt");
PrintWriter pwriter = new PrintWriter(fwriter);
pwriter.println(line);
pwriter.close();
FileReader freader = new FileReader("writer.txt");
BufferedReader breaderF = new BufferedReader(freader);
String tmp=null;
while( (tmp=breaderF.readLine()) != null)
System.out.println(tmp);
breaderF.close();
}
catch(IOException e) {
System.out.println(e);
}
}
}
***http://www.ocha.ac.jp/の内容を表示するプログラムを書い...
http://gyazo.com/13044fdd9d372118a1f6fe93896eadb3.png
ヒント1
import java.net.*;
が必要です。
URL targetURL = new URL("http://www.ocha.ac.jp/");
でURLクラスのインスタンスが得られる。
InputStream istream = targetURL.openStream();
でこれからInputStreamのインスタンスが得られる。
InputStreamReader isreader = new InputStreamReader(istre...
でこれからInputStreamReaderのインスタンスが得られる。
BufferedReader breader = new BufferedReader( isreader );
でこれからBufferedReader のインスタンスが得られる。
ヒント2
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
ここにプログラムを書く
} catch (IOException e) {
System.out.println("error...");
}
}
}
ヒント3:
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://www.ocha.ac.jp/");
InputStream istream = targetURL.openStream();
InputStreamReader isreader = new InputStreamReader(is...
BufferedReader breader = new BufferedReader( isreade...
ここで一行ずつ読み込む
} catch (IOException e) {
System.out.println("error...");
}
}
}
解答例:
import java.io.*;
import java.net.*;
public class URLTest {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://www.ocha.ac.jp/");
InputStream istream = targetURL.openStream();
InputStreamReader isreader = new InputStreamReader(is...
BufferedReader breader = new BufferedReader( isreade...
String line;
while((line=breader.readLine()) != null) System.out.p...
} catch (IOException e) {
System.out.println("error...");
}
}
}
***写真ファイルのダウンロード [#edb3e256]
http://is.ocha.ac.jp/~siio/cat.jpg
をダウンロードして、cat.jpgというファイルを作るプログラム...
データはテキストじゃなくて、バイナリーです。
ヒント1:
- InputStreamのインスタンスに対してread()メソッドを使うと...
-- 読み終わると-1になります。
- 1バイトのデータを書き出すなら、FileOutputStreamだけで可...
ヒント2:
import java.io.*;
import java.net.*;
public class URLJpeg {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
というインスタンスを作って、
istream.read()
で読んで、
fout.write(1バイト)
で書き出します。
解答例
import java.io.*;
import java.net.*;
//http://is.ocha.ac.jp/~siio/cat.jpg
//をダウンロードして、cat.jpgというファイルを作るプログ...
public class URLJpeg {
public static void main (String argv[]) {
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
int aData;
while((aData = istream.read()) != -1) fout.write(aDa...
istream.close();
fout.close();
} catch (IOException e) {
System.out.println("error...");
}
}
}
***写真読み込みの高速化 [#ia7ce1f8]
上記の例では写真データを1バイトずつ読み書きしていました。
InputStreamのメソッドを調べると、複数バイト単位で読み込む...
たとえば、1024バイトずつ読み書きすることで、処理速度が向...
そこで、複数バイト読み書きするよう、上記のプログラムを変...
実際にどの程度(実行速度にして何倍くらい)性能向上するか...
read
public int read(byte[] b)
throws IOException
入力ストリームから配列長さだけのバイト数を読み込もうとし...
実際に読み込まれたバイト数は整数として返されます。
戻り値は、バッファに読み込まれたバイトの合計数。ストリー...
を使って読みこみ、
write
public void write(byte[] b,
int off,
int len)
throws IOException
指定された byte 配列の、オフセット位置 off から始まる le...
を使ってください。
-ヒント
byte[] data = new byte[1024];
という配列を用意して、
int datalength;
while(( datalength=istream.read(data)) != -1) fout.writ...
とします。
-解答例
import java.io.*;
import java.net.*;
//http://is.ocha.ac.jp/~siio/cat.jpg
//をダウンロードして、cat.jpgというファイルを作るプログ...
//データはテキストじゃなくて、バイナリーです。
public class URLJpeg2 {
public static void main (String argv[]) {
byte[] data = new byte[1024];
try {
URL targetURL = new URL("http://is.ocha.ac.jp/~siio/c...
InputStream istream = targetURL.openStream();
FileOutputStream fout = new FileOutputStream("cat.jpg...
int datalength;
while(( datalength=istream.read(data)) != -1) fout.wr...
istream.close();
fout.close();
} catch (IOException e) {
System.out.println("error...");
}
}
}
ここでは1024バイトを読み込むことにしました。でも、InputSt...
available()
この入力ストリームのメソッドの次の呼出しによって、ブロッ...
これを使えば、適切な長さを見積もれるかもしれません。
**第12章 Swing 続き [#r35d7464]
***とても簡単なウィンドウ [#r57b34f9]
import javax.swing.JFrame;
public class SimpleWindow {
public static void main(String argv[]) {
JFrame f = new JFrame("私が作った最初の窓...
f.setSize(200,100);
f.setDefaultCloseOperation(JFrame.EXIT_ON...
f.setVisible(true);
}
}
*** JFrameを継承するプログラミング [#y09a72d9]
import javax.swing.JFrame;
public class SimpleWindow extends JFrame {
public void initialize () {
this.setTitle("私が作った最初の窓");
this.setSize(200,100);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public static void main (String argv[]) {
SimpleWindow sw = new SimpleWindow();
sw.initialize();
}
}
***ラベルを表示するウィンドウ [#xedfffec]
プログラム12.1を参考にして、上記の、継承を使ったプログラ...
Hello!という文字を出してみよう。
http://gyazo.com/c6efe47de19436f7564660377fe8b98c.png
解答例:
import javax.swing.*;
import java.awt.*;
public class SimpleWindow extends JFrame {
public void initialize () {
this.setTitle("私が作った最初の窓");
JLabel label = new JLabel("Hello!");
Container container = this.getContentPane();
container.add(label);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String argv[]) {
SimpleWindow sw = new SimpleWindow();
sw.initialize();
}
}
***ボタンを1個貼り付ける [#c069f727]
JLabelのところをJButtonにしてみましょう
**本日の課題 [#i1cc2d8c]
ボタンを出すプログラムのjavaとclassを提出してください。
***ボタンを1個貼り付ける [#c069f727]
JLabelのところをJButtonにしてみましょう
解答例:
import javax.swing.*;
import java.awt.*;
public class SimpleWindow extends JFrame {
public void initialize () {
this.setTitle("私が作った最初の窓");
JButton button = new JButton("Hello!");
Container container = this.getContentPane();
container.add(button);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String argv[]) {
SimpleWindow sw = new SimpleWindow();
sw.initialize();
}
}
http://is.ocha.ac.jp/~siio/index.php?plugin=attach&pcmd=o...
***ボタンを2個表示するウィンドウ [#cb6cf696]
プログラム12.2をみてください。
getContentPane()で得られたContainerに直接ボタンを貼付ける...
貼付けられるのは一つのボタンだけのようです。
そこで、JPanel (パネル) に2個のボタンを貼付け、それをCon...
http://gyazo.com/03c28df2419065241b8736b7b69d7fd3.png
プログラム12.2を参考にして、継承を使ったプログラムによる...
2個のボタンを出してみよう。
http://gyazo.com/4c3086ae9b6b5434d2ea741369f731c5.png
解答例:
import javax.swing.*;
import java.awt.*;
public class SimpleButton extends JFrame {
public void initialize () {
this.setTitle("私が作った最初の窓");
JPanel panel = new JPanel();
JButton button1 = new JButton("button1");
JButton button2 = new JButton("button2");
panel.add(button1);
panel.add(button2);
Container container = this.getContentPane();
container.add(panel);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String argv[]) {
SimpleButton sw = new SimpleButton();
sw.initialize();
}
}
このプログラムでは,ボタンを押しても何もおこりません.
ボタンが押されたイベントを受け取るためには,
+ActionListenerをimplementしたクラスを作る
+そのインスタンスを作る
+これをボタンにaddActionListener()で登録する
必要があります.
プログラム12.3を参考に,ボタンを押したらprintlnで次のよう...
http://gyazo.com/67d27d0588f4dd5d11410e1107165994.png
ヒント(最初の6行です)
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleButton extends JFrame implements Acti...
JButton button1, button2;
public void initialize () {
解答例
import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class SimpleButton extends JFrame implements Acti...
JButton button1, button2;
public void initialize () {
this.setTitle("私が作った最初の窓");
JPanel panel = new JPanel();
button1 = new JButton("button1");
button2 = new JButton("button2");
button1.addActionListener(this);
button2.addActionListener(this);
panel.add(button1);
panel.add(button2);
Container container = this.getContentPane();
container.add(panel);
this.pack();
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed (ActionEvent e) {
if(e.getSource()==button1)
System.out.println("Hello");
else
System.out.println("Goodbye");
}
public static void main(String argv[]) {
SimpleButton sw = new SimpleButton();
sw.initialize();
}
}
ここではボタンを区別するために、インスタンス(への参照)...
一つは、ボタンのテキストを入手することである。ボタンのテ...
ボタンのテキストを表示するだけなら以下のようにしても良い。
public void actionPerformed(ActionEvent e){
System.out.println(((JButton)e.getSource...
}
もう一つは、ボタンにコマンドを書く方法である。
ボタンにsetActionCommand(String)を定義しておくと、getActi...
button1.setActionCommand("hello");
としておけば、actionPerformedの中で
e.getActionCommand();
で文字列を得られる。例えば、
public void actionPerformed(ActionEvent e){
System.out.println(e.getActionCommand());
}
でコマンド部分を印刷できる。
***プログラム12.4をやってください。 [#f163e343]
***演習12.2(改) [#b195cae9]
上で作った二つのボタンのプログラムに対して、レイアウトマ...
演習のヒント
bt1 = new JButton("button1");
bt2 = new JButton("button2");
panel.setLayout(new FlowLayout(FlowLayout.RIGHT));
bt1.setActionCommand("this is b1");
bt2.setActionCommand("this is b2");
FlowLayoutにはCENTER, LEFT, RIGHTなどの揃え方の指定があり...
**第13章 様々なコンポーネントとレイアウト [#nfdf4f5e]
***プログラム13.1の説明図 [#ec2d7584]
http://gyazo.com/649bbe400f96c8c31923bcf7e5aebbd4.png
***提出 [#ge1f31d6]
本日作ったボタンを二つ表示するプログラム(どのバージョン...
[以下を、宿題としていましたがみなさん苦労されているので...
**第13章 様々なコンポーネントとレイアウト(続き) [#gb031c...
***演習:プログラム13.1のようにボタンを配置して、それぞれ...
ヒント:プログラム12.4を見て、上記のプログラムを拡張して5...
なお、以下のようにすると、ボタンの名前を印刷することがで...
public void actionPerformed(ActionEvent e){
System.out.println(((JButton)e.getSource...
}
プログラム12.4は継承を使っていないので以下のように書き直...
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ComplicatedLayoutSample extends JFrame impl...
public void initialize() {
JPanel panel1 = new JPanel();
JPanel panel2= new JPanel();
JPanel panel3= new JPanel();
JPanel panel4= new JPanel();
JPanel panel5= new JPanel();
panel1.setLayout(new FlowLayout());
for (int i=1; i<=3; i++) {
panel1.add(new JButton("NORTH" + i));
}
panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXI...
for (int i=1; i<=3; i++) {
panel2.add(new JButton("WEST" + i));
}
panel3.setLayout(new GridLayout(3,2));
for (int i=1; i<=6; i++) {
panel3.add(new JButton("CENTER" + i));
}
panel4.setLayout(new BorderLayout());
panel4.add(new JButton("EAST1"), BorderLayout.NORTH);
panel4.add(new JButton("EAST2"), BorderLayout.SOUTH);
panel5.setLayout(new BoxLayout(panel5, BoxLayout.X_AXI...
for (int i=1; i<=4; i++) {
panel5.add(new JButton("SOUTN" + i));
}
Container container = this.getContentPane();
container.add(panel1,BorderLayout.NORTH);
container.add(panel2,BorderLayout.WEST);
container.add(panel3,BorderLayout.CENTER);
container.add(panel4,BorderLayout.EAST);
container.add(panel5,BorderLayout.SOUTH);
this.setSize(400,200);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
}
public static void main(String[] args) {
ComplicatedLayoutSample cls = new ComplicatedLayoutSam...
cls.initialize();
}
}
つぎにaction listenerとして自分自身を追加します。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class ComplicatedLayoutSample extends JFrame impl...
public void initialize() {
JPanel panel1 = new JPanel();
JPanel panel2= new JPanel();
JPanel panel3= new JPanel();
JPanel panel4= new JPanel();
JPanel panel5= new JPanel();
panel1.setLayout(new FlowLayout());
for (int i=1; i<=3; i++) {
JButton btn = new JButton("NORTH" + i);
btn.addActionListener(this);
panel1.add(btn);
}
panel2.setLayout(new BoxLayout(panel2, BoxLayout.Y_AXI...
for (int i=1; i<=3; i++) {
JButton btn = new JButton("WEST" + i);
btn.addActionListener(this);
panel2.add(btn);
}
panel3.setLayout(new GridLayout(3,2));
for (int i=1; i<=6; i++) {
JButton btn = new JButton("CENTER" + i);
btn.addActionListener(this);
panel3.add(btn);
}
panel4.setLayout(new BorderLayout());
JButton btn1 = new JButton("EAST1");
btn1.addActionListener(this);
panel4.add(btn1, BorderLayout.NORTH);
JButton btn2 = new JButton("EAST2");
btn2.addActionListener(this);
panel4.add(btn2, BorderLayout.SOUTH);
panel5.setLayout(new BoxLayout(panel5, BoxLayout.X_AXI...
for (int i=1; i<=4; i++) {
JButton btn = new JButton("SOUTN" + i);
btn.addActionListener(this);
panel5.add(btn);
}
Container container = this.getContentPane();
container.add(panel1,BorderLayout.NORTH);
container.add(panel2,BorderLayout.WEST);
container.add(panel3,BorderLayout.CENTER);
container.add(panel4,BorderLayout.EAST);
container.add(panel5,BorderLayout.SOUTH);
this.setSize(400,200);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e) {
System.out.println( ((JButton)e.getSource()).getText()...
}
public static void main(String[] args) {
ComplicatedLayoutSample cls = new ComplicatedLayoutSam...
cls.initialize();
}
}
***どのボタンからのイベントであるかを識別する方法 [#i076d...
-プログラム12.3では
--ボタンへの参照を、action Performedから参照できる変数に...
--action Performedの中で、e.get Source()してButtonのイン...
-プログラム12.4では、
--準備として button.set Action(button.get Text());でボタ...
-- action Performedの中で e.get Action Command()でアクシ...
-ということで以下のようなことが可能です。
--acttion Performedの中で、get Source()してボタンを得る
--そのボタンからget Textしてボタンの文字列を得て文字比較...
--ただし、get Sourceで得られるのはボタンの親クラスなのでB...
--以下をaction Performedのなかで試してみよう
System.out.println((JButton)(e.getSource()).getText());
***13.2節を読んで,プログラム13.2を実行させてください [#s...
ボタンが一つしかないプログラムなので、ActionPerformedの中...
ボタン種類のチェックを省略してしまっているところが特徴で...
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class JTextFieldSample extends JFrame implements ...
JButton button;
JTextField textleft, textright;
public void initialize() {
button = new JButton("left to right");
button.addActionListener(this);
textleft= new JTextField(10);
textright= new JTextField(10);
JPanel panel = new JPanel();
panel.setLayout(new BorderLayout());
panel.add(textleft, BorderLayout.WEST);
panel.add(textright, BorderLayout.EAST);
panel.add(button, BorderLayout.SOUTH);
this.getContentPane().add(panel);
this.setTitle("JTextFieldSample");
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
textright.setText(textleft.getText());
textleft.setText("");
}
public static void main(String[] args){
JTextFieldSample sample = new JTextFieldSample();
sample.initialize();
}
}
***演習13.1をやってください [#xc59c932]
このプログラムに、右のテキストフィールドをクリアするclear...
こんなのをつくってください。
http://gyazo.com/999f1e766551a994186cc3d159bde0bf.png
BorderLayoutでもできるようですが、私はGridLayour使ってみ...
panel.setLayout(new GridLayout(2,2));
panel.add(textleft);
panel.add(textright);
panel.add(button);
panel.add(clearbutton);
ボタンが複数になるので、ActionPerformedの中で、ボタンを区...
//演習ができそうにないという人は、飛ばして、次に進んでく...
解答例(コンストラクタで作る)
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class JTextFieldSample extends JFrame implements ...
JButton button, clearButton;
JTextField textleft, textright;
JTextFieldSample(String title) {
setTitle(title);
button = new JButton("left to right");
clearButton = new JButton("clear");
button.addActionListener(this);
clearButton.addActionListener(this);
textleft = new JTextField(10);
textright = new JTextField(10);
JPanel panel=new JPanel();
panel.setLayout(new GridLayout(2,2));
panel.add(textleft);
panel.add(textright);
panel.add(button);
panel.add(clearButton);
Container container=this.getContentPane();
container.add(panel);
}
public void actionPerformed(ActionEvent e) {
if(e.getSource()==(button)) {
textright.setText(textleft.getText());
textleft.setText("");
}else if(e.getSource()==(clearButton)) {
textright.setText("");
}
}
public static void main(String[] args) {
JTextFieldSample sample = new JTextFieldSample("JTextF...
sample.pack();
sample.setVisible(true);
sample.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
解答例(初期化メソッドで作る)
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class JTextFieldSample extends JFrame implements ...
JButton button, clearButton;
JTextField textleft, textright;
public void initialize() {
button = new JButton("left to right");
button.addActionListener(this);
clearButton = new JButton("clear");
clearButton.addActionListener(this);
textleft= new JTextField(10);
textright= new JTextField(10);
JPanel panel = new JPanel();
panel.setLayout(new GridLayout(2,2));
panel.add(textleft);
panel.add(textright);
panel.add(button);
panel.add(clearButton);
this.getContentPane().add(panel);
this.setTitle("JTextFieldSample");
this.pack();
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
this.setVisible(true);
}
public void actionPerformed(ActionEvent e){
if( e.getSource() == button) {
textright.setText(textleft.getText());
textleft.setText("");
}else{
textright.setText("");
}
}
public static void main(String[] args){
JTextFieldSample sample = new JTextFieldSample();
sample.initialize();
}
}
***どのボタンからのイベントであるかを識別する方法 [#i076d...
action Performed (Action Event e) の中で、
-e.get Source()してButtonのインスタンスを得て比較する
-e.get Action Command()でアクションを得て文字比較する
--あらかじめbutton.set Action(”アクション名")しておく
-ボタンからget Textしてボタンの文字列を得て文字比較する
--get Sourceで得られるのはボタンの親クラスなのでButtonに...
System.out.println((JButton)(e.getSource()).getText());
***13.4節を読んで、プログラム13.4を実行してください [#ca7...
JListの型を指定しないとコンパイラの警告が出ます。警告を出...
JList<String> list = new JList<String>(data);
***提出 [#ge1f31d6]
プログラム13.4のjava, classを、いつものように学籍番号+ロ...
***13.5節を読んで,プログラム13.5を実行してください [#o61...
http://gyazo.com/dd4e103c011682b3a78b9ed0c8d5134b.png
http://gyazo.com/4755cce7280963b32050db455d265cc1.png
メニューアイテムにcommandという情報をつけて、ActionPerfor...
***演習13.2をやってください(メニュー項目は何でも良いです...
演習ができそうにないという人は、飛ばして、次に進んでくだ...
http://gyazo.com/2d9c3b6534e7b87fcd3ec22be00d5fed.png
新しいメニューも追加してみてください。例えば、payment、ca...
***13.6節を読んで,プログラム13.6を実行してください [#k36...
教科書203ページのプログラム13.6の5行めのところに、
... implements ActionListener6: {
とありますが、これは、
... implements ActionListener {
の間違いのようです。
**2018年12月20日 [#e1b62f01]
**終章 おまけ [#s65aaa02]
***マウスイベント [#cc8c3961]
マウスイベントを受け取るには、Mouse ListenerやMouse Motio...
以下のようにするとイベントをうけとれるます。
まずはMouse Motion Listenerを試してみましょう。
マニュアル
- https://docs.oracle.com/javase/jp/8/docs/api/java/awt/e...
によると、実装しないといけないメソッドはmouse Draggedとmo...
- void mouseDragged(MouseEvent e)
コンポーネント上でマウス・ボタンを押してドラッグすると呼...
- void mouseMoved(MouseEvent e)
ボタンを押さずにマウス・カーソルをコンポーネント上に移動...
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MouseTest extends JFrame implements MouseMo...
public void mouseDragged(MouseEvent e) {
System.out.println("mouse dragged!");
}
public void mouseMoved(MouseEvent e) {
System.out.println("mouse moved!");
}
public static void main(String[] args) {
MouseTest test = new MouseTest();
test.setTitle("MouseTest");
test.addMouseMotionListener(test);
test.setSize(400,300);
test.setVisible(true);
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
次に、Mouse Listenerも実装してみましょう。マニュアル
- https://docs.oracle.com/javase/jp/7/api/java/awt/event/...
によると、
- void mouseClicked(MouseEvent e)
コンポーネント上でマウスボタンをクリック (押してから離す)...
- void mouseEntered(MouseEvent e)
コンポーネントにマウスが入ると呼び出されます。
- void mouseExited(MouseEvent e)
コンポーネントからマウスが出ると呼び出されます。
- void mousePressed(MouseEvent e)
コンポーネント上でマウスボタンが押されると呼び出されます。
- void mouseReleased(MouseEvent e)
コンポーネント上でマウスボタンが離されると呼び出されます。
これを追加します。宣言で
public class MouseTest extends JFrame implements MouseLi...
として、またmainに
test.addMouseListener(test);
を追加します。
import java.awt.*;
import javax.swing.*;
import java.awt.event.*;
public class MouseTest extends JFrame implements MouseLi...
public void mouseClicked(MouseEvent e) {
System.out.println("mouse clicked!");
}
public void mouseEntered(MouseEvent e) {
System.out.println("mouse entered!");
}
public void mouseExited(MouseEvent e) {
System.out.println("mouse exited!");
}
public void mousePressed(MouseEvent e) {
System.out.println("mouse pressed!");
}
public void mouseReleased(MouseEvent e) {
System.out.println("mouse released!");
}
public void mouseDragged(MouseEvent e) {
System.out.println("mouse dragged!");
}
public void mouseMoved(MouseEvent e) {
System.out.println("mouse moved!");
}
public static void main(String[] args) {
MouseTest test = new MouseTest();
test.setTitle("MouseTest");
test.addMouseListener(test);
test.addMouseMotionListener(test);
test.setSize(400,300);
test.setVisible(true);
test.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
*** 線を引く簡単なプログラム [#y4c3a992]
JPanelのサブクラスを作りました。
import javax.swing.JPanel;
import java.awt.Graphics;
public class DrawPanel extends JPanel {
public void drawLine(int x1, int y1, int x2, int y2){
Graphics g = this.getGraphics();
g.drawLine(x1, y1, x2, y2);
}
}
こちらはメインのプログラム。JFrameのサブクラスで、これに...
リスナーになっているので、こちらでマウスなどのイベントを...
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
import javax.swing.JFrame;
public class SimpleDraw extends JFrame implements MouseM...
int lastx=0, lasty=0, newx, newy;
DrawPanel panel;
public void mouseMoved(MouseEvent arg0) {
}
public void mouseDragged(MouseEvent arg0) {
newx=arg0.getX();
newy=arg0.getY();
panel.drawLine(lastx,lasty,newx,newy);
lastx=newx;
lasty=newy;
}
private void init() {
this.setTitle("Simple Draw");
this.setSize(300, 200);
this.addMouseMotionListener(this);
panel=new DrawPanel();
this.getContentPane().add(panel);
this.setVisible(true);
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public static void main(String[] args) {
SimpleDraw frame=new SimpleDraw();
frame.init();
}
}
***Eclipseを使ってみよう [#vf7b5de5]
http://gyazo.com/4383db7fb81f9eacbf5cc959ff77a33d.png
-Eclipseの警告を消す方法
private static final long serialVersionUID = 42L;
という変数を定義しておきます。
---------------
**欠席状況 [#tfa637d9]
3/4以上出席してください。(欠席は3回まで)欠席4回で自動的...
欠席3回以下なら不可にはなりませんが、成績が下がるかもしれ...
(病欠、公欠、忌引などは0になっているはずですが間違ってい...
|学籍番号|10/4|10/11|10/25|11/8|11/15|11/22|11/29|12/6|12...
|1720501|0|0|0|0|0|0|0|0|0|0|0|0|
|1720502|0|0|0|0|0|0|0|0|0|0|0|0|
|1720503|0|0|0|0|0|0|0|0|0|0|0|0|
|1720504|0|0|0|0|0|0|0|0|0|0|0|0|
|1720505|0|0|0|0|0|0|0|0|0|0|0|0|
|1720506|0|0|0|0|0|0|0|0|0|0|0|0|
|1720507|0|0|0|0|0|0|0|0|0|0|0|0|
|1720508|0|1|0|0|0|0|0|0|0|0|0|1|
|1720509|0|0|0|0|0|0|0|0|0|0|0|0|
|1720510|0|0|0|0|0|0|0|0|0|0|0|0|
|1720511|0|0|1|0|0|1|0|1|0|0|0|3|
|1720512|0|0|0|0|0|0|0|0|0|0|0|0|
|1720513|0|0|0|0|0|0|0|0|0|0|0|0|
|1720514|0|0|0|0|0|0|0|0|0|1|0|1|
|1720515|0|0|0|0|0|0|0|0|0|0|0|0|
|1720516|0|0|0|0|0|0|0|0|0|0|0|0|
|1720517|0|0|0|0|0|0|0|0|0|0|0|0|
|1720518|0|0|0|0|0|0|0|0|0|0|0|0|
|1720519|0|0|0|0|0|1|0|0|0|0|0|1|
|1720520|0|0|0|0|0|0|0|0|0|0|0|0|
|1720521|1|0|0|0|0|1|0|0|0|1|0|3|
|1720522|0|0|0|0|0|0|0|0|0|0|0|0|
|1720523|0|0|0|0|0|0|0|0|0|0|0|0|
|1720524|0|0|0|0|0|0|0|0|0|0|0|0|
|1720525|0|0|0|0|0|0|0|0|0|0|0|0|
|1720526|0|0|0|0|0|0|0|0|0|1|0|1|
|1720527|0|0|0|0|1|0|0|0|0|0|0|1|
|1720528|0|0|0|0|0|1|0|0|0|0|1|2|
|1720529|0|0|0|0|0|0|0|0|0|0|1|1|
|1720530|1|0|0|0|0|1|0|0|1|1|0|4|
|1720531|0|0|0|0|0|1|0|0|0|0|0|1|
|1720532|0|0|0|0|0|0|0|0|0|0|0|0|
|1720533|0|0|0|0|0|0|0|0|0|0|0|0|
|1720534|0|0|0|0|0|1|0|0|0|0|0|1|
|1720535|0|0|0|0|0|0|0|0|0|0|0|0|
|1720536|0|0|0|0|0|1|0|0|1|0|0|2|
|1720537|0|0|0|0|0|0|0|0|0|0|0|0|
|1720538|0|0|0|0|0|0|0|0|0|0|0|0|
|1720539|0|0|0|0|0|0|0|0|0|0|1|1|
|1720540|0|0|0|0|0|1|0|0|0|0|0|1|
|1720541|0|0|0|0|0|0|0|0|0|0|0|0|
|1720542|0|0|0|0|0|0|0|0|0|0|0|0|
|1720543|0|0|0|0|0|0|0|0|0|0|0|0|
|1620514|1|1|1|1|1|1|1|1|1|1|1|11|
|1520520|0|1|0|0|1|0|0|0|1|0|0|3|
|1740665|0|0|0|0|0|0|0|0|0|0|0|0|
*集中演習「ヒューマンインタフェース」出題範囲 (2019年1月...
教科書の3.5節を読んで、
ユーザモデルとデザインモデル(設計者のモデル)について理...
この部分を授業で説明した資料を以下に置いておきます。
- https://www.dropbox.com/s/q4zhn205vrvyfgr/forexam2018.p...
皆さんは、自分が作ったプログラムを人に使ってもらった時に、
思いもしないようなバグを発見してもらった経験がありますで...
他人は、
プログラムを作った自分だったら絶対に行わないような操作を...
そこで、
- 製品になって人々が使うようになってから発覚するプログラ...
- 多くの人々が使う機械の誤操作や故障を引き起こしてしまう...
を設計者、開発者が排除できない原因について考えておいてく...
*大学院HCI演習および人間機械系演習 2018年度後期 [#r13a4a15]
**講義予定 [#ab05a7eb]
10月30日の福地先生講義は延期になり、通常授業になります。
-10月9日ガイダンス
-10月16日休講
-10月23日
-10月30日
-11月6日
-11月13日
-11月20日[[明治大学福地先生:https://www.meiji.ac.jp/ams/p...
-11月27日
-12月4日
-12月11日
-12月18日
-12月25日
-1月8日
-1月15日
-1月22日
//レポート提出者一覧(2017/2/10 12:00現在)
**発表の記録 [#m6c7145e]
学籍番号
1840702
1840706
1840708
1840709
1840710
1840644 (聴講)
1840645 2018年11月6日
1840648
1840649 2018年11月6日
1840651
1840655
1840658
1840659
1840661
1840662
1840663
1840665
1840669
1840673 2018年11月6日
1840675
1840677
1740671
------
このページについてのお問い合わせはsiio@is.ocha.ac.jpまで。
ページ名: