小課題 Javaプログラミングの確認
をテンプレートにして作成
開始行:
[[TopPage]] > [[演習課題]] > 小課題
* Javaプログラミング演習の確認(まとめ) [#h3ecc9db]
ここで,演習1の理解度を確認するために,小課題を行います.
みなさんの理解度を確認するために,課題のプログラムができ...
※提出されたソースコードの出来は、最終評価の点数には関係し...
わからなければ,吉野またはTAに質問してください.
*** 提出期限 [#i8e926bb]
&size(16){提出先:以下の&color(red){2人のTA}; のメールア...
&size(16){件名:Javaプログラミング小課題-60236???(名前)};~
&br;
&size(20){本信(TA,大学院1年):s206263@wakayama-u.ac.jp};~
&size(20){河島(TA,大学院1年):s206075@wakayama-u.ac.jp};~
※&color(red){メールの本文もちゃんと書くようにしましょう!...
※動作確認をして返信します.少し時間がかかるかもしれません...
** サンプルプログラムの紹介 [#r1e02fe7]
まず,以下のサンプルプログラムをダウンロードしてください.
&ref(Ensyu.java,,,Ensyu.java ダウンロード);/[[ソースコー...
サンプルプログラムを実行すると,以下のような表示が出ます.
現在の値: 0
命令を入力してください:
ここで,何か値(例としてABC)を入力すると,
命令を入力してください: ABC
命令ABCは解釈できません.
現在の値は:0
と表示され,「命令を入力してください」に戻ります.
EXITと入力すると,文字入力のループを終了します.
** 課題 [#t36e79f5]
命令文を入力すると,内部の値(現在値)が変わる計算プログ...
現在の値を表す変数名はvalueにしています.
具体的には,
ADD 100 [Enterキー]
と入力すると,プログラムの「現在の値」に100を加算します.
同様に,
SUB 50 [Enterキー]
と入力すると,プログラムの「現在の値」から50を減算します.
このように,命令語と数値1つを与えると,プログラム内の「...
- 入力する命令語は,以下の4つとします.
--加算(ADD),減算(SUB),乗算(MUL),除算(DIV)
- 各命令は,大文字でも小文字でも認識するようにしてくださ...
- 例外エラーを考慮し,なるべくプログラムが止まらないよう...
-- 例えば,「0で割る」とエラーが発生します.
&color(red,yellow){'' ヒント1 ''};
- この小課題でやってもらいたいことは,以下の2つです.
+ 命令文にある数値文字列を,数値(int型)に変換する処理
+ 4つの命令語を認識し,適切な計算をする処理
サンプルプログラム中の適切な場所に,
// (1) 2つ目の要素があれば,文字列から数値に変換する.
のように,コメントを挿入していますので,参考にしてくださ...
&color(red,yellow){'' ヒント2 ''};
String[] item = readdata.split(" ");
を使うと、入力データが ADD 40 のときは、
item[0]は、ADDが入っています。
item[1]は、40が入っています。
ただし、item[1]に入っている40は文字の40なので計算ができ...
Integer.parseIntを使って数字に変換する必要があります。
&color(red,yellow){'' ヒント3 ''};
ADDなどの命令の追加場所は、
if (operator.equalsIgnoreCase("EXIT"))の前くらいです!
&color(red,yellow){'' ヒント4 ''};
「2つ目の要素があれば,文字列から数値に変換する」は、
if文で条件わけをしましょう!
if (item.length > 1)を使うと、itemという配列が1個なのか
2個以上なのかを区別できます!
*** 発展(余裕があったらどうぞ.必須ではありません.) [#...
- 適切なエラー文が表示されるよう,プログラムを工夫してみ...
-- 例えば,下のように実行してみるとどうなりますか?
ADD A
ADD
ADDD
(何も入力しない)
- オリジナルの命令語や新機能などを考えてみましょう.
*** よくあるエラー [#gbdf11a3]
- ''配列の要素数不足''
String operand = item[1];
-- "ADD 3"を入力すると,item[0]に"ADD",item[1]に"3"が入...
-- しかし,入力内容が"ADD"だけだと?item[1]はありませんね...
-- この状態で,上記のプログラムを読むと怒られてしまいます.
if (item.length > 1) {
String operand = item[1];
}
-- 回避するには,このように「要素数が2以上」という条件を...
- ''if文とスコープ''
-- %%%if文の中で宣言した変数は,そのif文の中でしか使用で...
String operand;
if (item.length > 1) {
operand = item[1];
}
&color(red,yellow){'' try-catchとは ''};
try-catchは,何らかの例外が発生するところで利用します(C...
try {
//バッファから一行読み込みます
readdata = br.readLine();
} catch (Exception ex) {
// 読み込み失敗時は,EXITする
readdata = "EXIT";
}
以下,例外の一例です.
- 数字が入っているはずの文字を,数字に変換しようとしたけ...
- ファイルに書き込もうとおもったけど,書き込み禁止で,例...
- ネットにつなごうとおもったけど,ネットにつなげなくて,...
catch (Exception ex)
で例外はつかまえられますが,細かい例外を使い時があります...
ArrayIndexOutOfBoundsException //配列の境界を越えた例外...
NullPointerException //確保されていない領域になにかした~
FileNotFoundException //ファイルが見つからない~
など,いろいろあります. それぞれの例外をつかまえて(catc...
try{
例外が発生するかも知れない文1;
例外が発生するかも知れない文2;
例外が発生するかも知れない文3;
.....
}
catch (例外クラス1 変数名1){
例外クラス1の例外が発生した時に実行する文;
.....
}
catch (例外クラス2 変数名1){
例外クラス2の例外が発生した時に実行する文;
.....
}
.... 対応したい例外だけ,catchを書く
finally {
例外が発生してもしなくても,実行する文; // finally ブ...
...
}
&size(16){[[&ref(http://yoslab.net/netprog/next.gif,nolin...
終了行:
[[TopPage]] > [[演習課題]] > 小課題
* Javaプログラミング演習の確認(まとめ) [#h3ecc9db]
ここで,演習1の理解度を確認するために,小課題を行います.
みなさんの理解度を確認するために,課題のプログラムができ...
※提出されたソースコードの出来は、最終評価の点数には関係し...
わからなければ,吉野またはTAに質問してください.
*** 提出期限 [#i8e926bb]
&size(16){提出先:以下の&color(red){2人のTA}; のメールア...
&size(16){件名:Javaプログラミング小課題-60236???(名前)};~
&br;
&size(20){本信(TA,大学院1年):s206263@wakayama-u.ac.jp};~
&size(20){河島(TA,大学院1年):s206075@wakayama-u.ac.jp};~
※&color(red){メールの本文もちゃんと書くようにしましょう!...
※動作確認をして返信します.少し時間がかかるかもしれません...
** サンプルプログラムの紹介 [#r1e02fe7]
まず,以下のサンプルプログラムをダウンロードしてください.
&ref(Ensyu.java,,,Ensyu.java ダウンロード);/[[ソースコー...
サンプルプログラムを実行すると,以下のような表示が出ます.
現在の値: 0
命令を入力してください:
ここで,何か値(例としてABC)を入力すると,
命令を入力してください: ABC
命令ABCは解釈できません.
現在の値は:0
と表示され,「命令を入力してください」に戻ります.
EXITと入力すると,文字入力のループを終了します.
** 課題 [#t36e79f5]
命令文を入力すると,内部の値(現在値)が変わる計算プログ...
現在の値を表す変数名はvalueにしています.
具体的には,
ADD 100 [Enterキー]
と入力すると,プログラムの「現在の値」に100を加算します.
同様に,
SUB 50 [Enterキー]
と入力すると,プログラムの「現在の値」から50を減算します.
このように,命令語と数値1つを与えると,プログラム内の「...
- 入力する命令語は,以下の4つとします.
--加算(ADD),減算(SUB),乗算(MUL),除算(DIV)
- 各命令は,大文字でも小文字でも認識するようにしてくださ...
- 例外エラーを考慮し,なるべくプログラムが止まらないよう...
-- 例えば,「0で割る」とエラーが発生します.
&color(red,yellow){'' ヒント1 ''};
- この小課題でやってもらいたいことは,以下の2つです.
+ 命令文にある数値文字列を,数値(int型)に変換する処理
+ 4つの命令語を認識し,適切な計算をする処理
サンプルプログラム中の適切な場所に,
// (1) 2つ目の要素があれば,文字列から数値に変換する.
のように,コメントを挿入していますので,参考にしてくださ...
&color(red,yellow){'' ヒント2 ''};
String[] item = readdata.split(" ");
を使うと、入力データが ADD 40 のときは、
item[0]は、ADDが入っています。
item[1]は、40が入っています。
ただし、item[1]に入っている40は文字の40なので計算ができ...
Integer.parseIntを使って数字に変換する必要があります。
&color(red,yellow){'' ヒント3 ''};
ADDなどの命令の追加場所は、
if (operator.equalsIgnoreCase("EXIT"))の前くらいです!
&color(red,yellow){'' ヒント4 ''};
「2つ目の要素があれば,文字列から数値に変換する」は、
if文で条件わけをしましょう!
if (item.length > 1)を使うと、itemという配列が1個なのか
2個以上なのかを区別できます!
*** 発展(余裕があったらどうぞ.必須ではありません.) [#...
- 適切なエラー文が表示されるよう,プログラムを工夫してみ...
-- 例えば,下のように実行してみるとどうなりますか?
ADD A
ADD
ADDD
(何も入力しない)
- オリジナルの命令語や新機能などを考えてみましょう.
*** よくあるエラー [#gbdf11a3]
- ''配列の要素数不足''
String operand = item[1];
-- "ADD 3"を入力すると,item[0]に"ADD",item[1]に"3"が入...
-- しかし,入力内容が"ADD"だけだと?item[1]はありませんね...
-- この状態で,上記のプログラムを読むと怒られてしまいます.
if (item.length > 1) {
String operand = item[1];
}
-- 回避するには,このように「要素数が2以上」という条件を...
- ''if文とスコープ''
-- %%%if文の中で宣言した変数は,そのif文の中でしか使用で...
String operand;
if (item.length > 1) {
operand = item[1];
}
&color(red,yellow){'' try-catchとは ''};
try-catchは,何らかの例外が発生するところで利用します(C...
try {
//バッファから一行読み込みます
readdata = br.readLine();
} catch (Exception ex) {
// 読み込み失敗時は,EXITする
readdata = "EXIT";
}
以下,例外の一例です.
- 数字が入っているはずの文字を,数字に変換しようとしたけ...
- ファイルに書き込もうとおもったけど,書き込み禁止で,例...
- ネットにつなごうとおもったけど,ネットにつなげなくて,...
catch (Exception ex)
で例外はつかまえられますが,細かい例外を使い時があります...
ArrayIndexOutOfBoundsException //配列の境界を越えた例外...
NullPointerException //確保されていない領域になにかした~
FileNotFoundException //ファイルが見つからない~
など,いろいろあります. それぞれの例外をつかまえて(catc...
try{
例外が発生するかも知れない文1;
例外が発生するかも知れない文2;
例外が発生するかも知れない文3;
.....
}
catch (例外クラス1 変数名1){
例外クラス1の例外が発生した時に実行する文;
.....
}
catch (例外クラス2 変数名1){
例外クラス2の例外が発生した時に実行する文;
.....
}
.... 対応したい例外だけ,catchを書く
finally {
例外が発生してもしなくても,実行する文; // finally ブ...
...
}
&size(16){[[&ref(http://yoslab.net/netprog/next.gif,nolin...
ページ名: