#author("2026-01-05T06:45:39+00:00","","") ネットワークシステム開発演習(Java演習) > 演習課題 > 小課題
ここで,理解度を確認するために,小課題を行います.
みなさんの理解度を確認するために,課題のプログラムができたら,ソースコードを提出してください.
※できるところまで,やってみてください.わからなければ,吉野またはTAに質問してください.
提出期限:演習3日(週)目が始まるまでに提出してください.
提出先:以下の2人のTA のメールアドレス両方両方(両方というのは,日本語で「2人に同時に(送信先に2人ともいれる)」という意味です!)に".javaファイル"を添付して送ってください。
件名:Javaプログラミング小課題-(学生番号)(名前)
⻆倉(TA,大学院1年:s266147@wakayama-u.ac.jp)
土井(TA,大学院1年:s266187@wakayama-u.ac.jp)
※メールの本文もちゃんと書くようにしましょう!書き方は調べれば出てきます.
※メールの「ちゃんとした」書き方を思い出せない人は,1年生のときの「入門セミナー」の資料を見直してください.ファイルを添付だけして本文のないメールはスパム扱いになります.
※動作確認をして返信します.少し時間がかかるかもしれませんが待っていてください.一週間たっても返事がない場合,TAまで連絡をください.
まず,以下のサンプルプログラムをダウンロードしてください.
Ensyu.java ダウンロード/ソースコードファイルを見る
サンプルプログラムを実行すると,以下のような表示が出ます.
現在の値: 0 命令を入力してください:
ここで,何か値(例としてABC)を入力すると,
命令を入力してください: ABC 命令ABCは解釈できません. 現在の値は:0
と表示され,「命令を入力してください」に戻ります. EXITと入力すると,文字入力のループを終了します.
命令文を入力すると,内部の値(現在値)が変わる計算プログラムを作成してください.
現在の値を表す変数名はvalueにしています.
具体的には,
ADD 100 [Enterキー]
と入力すると,プログラムの「現在の値」に100を加算します. 同様に,
SUB 50 [Enterキー]
と入力すると,プログラムの「現在の値」から50を減算します.
このように,命令語と数値1つを与えると,プログラム内の「現在の値」を操作して,表示するプログラムを作成してください.
ヒント1
サンプルプログラム中の適切な場所に,
// (1) 2つ目の要素があれば,文字列から数値に変換する.
のように,コメントを挿入していますので,参考にしてください.もちろん他の部分も修正OKです.
ヒント2
String[] item = readdata.split(" ");
を使うと、入力データが ADD 40 のときは、
item[0]は、ADDが入っています。
item[1]は、40が入っています。
ただし、item[1]に入っている40は文字の40なので計算ができないので、
Integer.parseIntを使って数字に変換する必要があります。
ヒント3
ADDなどの命令の追加場所は、
if (operator.equalsIgnoreCase("EXIT"))の前くらいです!
ヒント4
「2つ目の要素があれば,文字列から数値に変換する」は、 if文で条件わけをしましょう! if (item.length > 1)を使うと、itemという配列が1個なのか 2個以上なのかを区別できます!
ADD A ADD ADDD (何も入力しない)
String operand = item[1];
if (item.length > 1) {
String operand = item[1];
}String operand;
if (item.length > 1) {
operand = item[1];
}try-catchとは try-catchは,何らかの例外が発生するところで利用します(C言語にはないので,とっても便利な機能です!). 「例外」というは,正しく動けば問題ないけど,なにかがおかしいとき=例外 です. 下の例では,tryブロックの中で,バッファから読み込んだ時に, 読み込めなかったら,catchブロックにはいります.
try {
//バッファから一行読み込みます
readdata = br.readLine();
} catch (Exception ex) {
// 読み込み失敗時は,EXITする
readdata = "EXIT";
}
以下,例外の一例です.
catch (Exception ex)
で例外はつかまえられますが,細かい例外を使い時があります. いくつか紹介します.
ArrayIndexOutOfBoundsException //配列の境界を越えた例外.int a[6]までしか確保していないのに,a[6]にアクセスしたとか~ NullPointerException //確保されていない領域になにかした~ FileNotFoundException //ファイルが見つからない~
など,いろいろあります. それぞれの例外をつかまえて(catch) して処理を変えるなども可能ですね. 以下,例を示します.
try{
例外が発生するかも知れない文1;
例外が発生するかも知れない文2;
例外が発生するかも知れない文3;
.....
}
catch (例外クラス1 変数名1){
例外クラス1の例外が発生した時に実行する文;
.....
}
catch (例外クラス2 変数名1){
例外クラス2の例外が発生した時に実行する文;
.....
}
.... 対応したい例外だけ,catchを書く
finally {
例外が発生してもしなくても,実行する文; // finally ブロックはなくてもいい.
...
}