11/1 課題
分数を扱うクラス Fraction を定義して,四則演算のためのメソッドも書きなさい.
その上で,前回の課題の電卓プログラムを分数を扱えるように改造しなさい.
ファイルは,自分のホー
ムディレクトリの下に java というディレクトリを作成して,その下に
Kadai1101.java という名前で作成すること(クラス名もKadai1101という名前
で作成すること).
- 入力は数の行と四則演算子(+, -, *, /)の行を交互に入れる.数の行を
入れた直後にそれまでの計算結果を表示する.最後に四則演算子の代りに= を
入れると終了する.
- 数は「整数」あるいは「整数/整数」の形で入力する.
- 既約分数にした上で表示すること(2/4という表示は不可).
- 演算子の優先順位などは考慮せず,入力順に計算していく.
- エラー処理などはきちんと行わなくて良い.
実行例を示す.人間による入力は下線をつけて表わす.
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人程度が解答する程度しか期待していない).