11/1 課題

分数を扱うクラス Fraction を定義して,四則演算のためのメソッドも書きなさい. その上で,前回の課題の電卓プログラムを分数を扱えるように改造しなさい. ファイルは,自分のホー ムディレクトリの下に java というディレクトリを作成して,その下に Kadai1101.java という名前で作成すること(クラス名もKadai1101という名前 で作成すること). 実行例を示す.人間による入力は下線をつけて表わす.
dell.tanaka.ecc.u-tokyo.ac.jp% java Kadai1101
3/10
3/10
*
3
9/10
+
3/10
6/5
/
-30
-1/25
-
3/100
-7/100
=

プログラムがちゃんと動くことを確かめたら,

/home/ktanaka/bin/report1101 1
を実行すること.このプログラムは,~/java/Kadai1101.javaの有無,コンパ イル,実行できるかどうかなどをチェックする.なお,自分の名前,学生証番 号,プログラムに関する説明をKadai1101.java の先頭にコメントとして 入れること(前回はプログラムに関する説明が入っていないものが多かった, 今回からは減点の対象とする).
課題の提出期限は11月6日(月)の21:00.それ以前であれば,何度でも再提出できる.

ヒント(1)

はいぱーワークブックに関連した記述 分数のクラスがあるので参考にすること.

ヒント(2)

読み込んだ数が分数かどうかは, StringのindexOfメソッドの返す値で判断できる.以下のように呼ぶと, 文字列中に'/'が含まれるときは何文字目かが返り,含まれない時は -1が変える.
 str="186";
 str.indexOf('/') -> -1
 str="15/86";
 str.indexOf('/') -> 2
文字列中に'/'が含まれる時に,その前後を切り出すには, Stringのsubstringメソッドが使える
 str="15/86";
str.substring(0,2) -> "15"
str.substring(3,5) -> "86"

ヒント(3)

既約分数を求めるのは,分子と分母の絶対値の最大公約数を求めて,それぞれ 割れば良い.

11/1 オプション課題

上の課題だけでは満足できない人は,例外処理を入れて,間違った入力を入 れた時に,的確なメッセージを出して実行を続けられるようにプログラムを改 造して(構文を変更してもかまわない), 11/6(月)の21:00までに,lectures.g00.cp1-ktanaka-W-Wed-5 のニュースグ ループに投稿すること.オプション課題も評価の対象にはするが,本来の課題 と比べると比重は小さい(5人に1人程度が解答する程度しか期待していない).