• 締切済み

以下のクラスで"2/3"のように「/」の前が分子、後が分母となるような

以下のクラスで"2/3"のように「/」の前が分子、後が分母となるような分数で初期化するにはどうすればいいですか? class Bunsu { final static Bunsu ZERO=new Bunsu(0,1); final static Bunsu ONE=new Bunsu(1,1); int bunshi; int bunbo; Bunsu() {} Bunsu (int s,int b) {set(s,b);} void set(int x,int y) { bunshi=x; bunbo=y; int w=gcd(bunshi,bunbo); bunshi=bunshi/w; bunbo=bunbo/w; } static int gcd(int x,int y) { while (y!=0) { int r=x % y; x=y; y=r; } return x; } double jissuChi() { return (double)bunshi/bunbo; } Bunsu seki(Bunsu x) { int s=bunshi*x.bunshi; int b=bunbo*x.bunbo; return new Bunsu(s,b); } Bunsu wa(Bunsu x) { int s=bunshi*x.bunbo+x.bunshi*bunbo; int b=bunbo*x.bunbo; return new Bunsu(s,b); } public String toString() { return bunshi+"/"+bunbo; }

みんなの回答

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

(1)文字列を引数とするコンストラクタを作る (2)"/"でsplitする (3)分割された文字列をそれぞれparseIntで数値化する 途中、splitで分割数が2以外、あるいはparseIntでの 例外検出があれば、例外をスローします。 現コンストラクタで、(0,0)を引数にするとゼロ除算に なるような気がします。

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.1

そのようなコンストラクタを作ってください.

関連するQ&A