上机题
1. 带分数运算
【问题描述】利用已有分数类(Fraction)设计带分数类(MixedFration)(表示形式为a[b/c],其中a为整数部分,b为分子,c为分母),添加或者重写必要的属性和方法,以输出正确结果。其中Test类和Fraction类已经定义,只须提交包含MixedFration类的MixedFration.java文件,主类名填写为Test。
【输入形式】无
【输出形式】带分数的运算结果仍为带分数,表示为“3[1/2]”,对应分数为“7/2”,若整数部分为0,则表示为“1/2”,若“-3[1/2]”则对应分数为“-7/2”。参照样例输出
【样例输入】无
【样例输出】
2[5/6]
3[7/9]
-3[5/6]
-2[7/8]
【样例说明】无
【评分标准】结果正确,满分。
提供的Test类和Fraction类如下:
public class Test {
public static void main(String[] args) {
MixedFraction a = new MixedFraction (1,1,2);
MixedFraction b = new MixedFraction (1,1,3);
a.jia(b);
System.out.println(a);
a.cheng(b);
System.out.println(a);
MixedFraction c = new MixedFraction (-2,1,2);
MixedFraction d = new MixedFraction (1,1,3);
c.jian(d);
System.out.println(c);
c.chu(d);
System.out.println(c);
}
}
class Fraction {
private int fenZi;
private int fenMu;
public Fraction() {
}
public Fraction(int fenZi, int fenMu) {
super();
this.fenZi = fenZi;
this.fenMu = fenMu;
}
public int getFenZi() {
return fenZi;
}
public void setFenZi(int fz) {
this.fenZi = fz;
}
public int getFenMu() {
return fenMu;
}
public void setFenMu(int fm) {
this.fenMu = fm;
}
public void huaJian() {
if (fenZi == 0) {
fenMu = 1;
}
int yueshu = getYueshu();
if (fenMu > 0) {
fenZi /= yueshu;
fenMu /= yueshu;
} else {
fenZi /= -yueshu;
fenMu /= -yueshu;
}
}
private int getYueshu() {
int a = Math.abs(fenZi);
int b = Math.abs(fenMu);
int smaller = Math.min(a, b);
for (int i = smaller; i > 1; i--) {
if (a % i == 0 && b % i == 0) {
return i;
}
}
return 1;
}
public String toString() {
if (fenMu == 1) {
return fenZi + "";
}
return fenZi + "/" + fenMu;
}
public void jia(Fraction a) {
this.fenZi = this.fenZi * a.getFenMu() + a.getFenZi() * this.fenMu;
this.fenMu = this.fenMu * a.getFenMu();
}
}
编写的MixedFration类如下:
public class MixedFration {
}
class MixedFraction extends Fraction{
private int zengShu;
public MixedFraction(int zengShu,int fenZi,int fenMu){
super(fenZi, fenMu);
if(zengShu>=0)
setFenZi(zengShu*getFenMu()+getFenZi());
else
setFenZi(zengShu*getFenMu()-getFenZi());
transform();
}
public void transform(){
if(zengShu>=0)
setFenZi(zengShu*getFenMu()+getFenZi());
else
setFenZi(zengShu*getFenMu()-getFenZi());
}
public int getZengShu() {
return zengShu;
}
public void setZengShu(int zengShu) {
this.zengShu = zengShu;
}
public void jia(MixedFraction a){
transform();
setFenZi(getFenZi()* a.getFenMu() + a.getFenZi() * getFenMu());
setFenMu(getFenMu() * a.getFenMu());
}
public void cheng(MixedFraction a) {
transform();
setFenZi(getFenZi()*a.getFenZi());
setFenMu(getFenMu()*a.getFenMu());
}
public void jian(MixedFraction a) {
transform();
setFenZi(getFenZi()* a.getFenMu() - a.getFenZi() * getFenMu());
setFenMu(getFenMu() * a.getFenMu());
}
public void chu(MixedFraction a) {
transform();
setFenZi(getFenZi()*a.getFenMu());
setFenMu(getFenMu()*a.getFenZi());
}
public void huaJian(){
super.huaJian();
setZengShu( getFenZi() / getFenMu() );
setFenZi( Math.abs(getFenZi() % getFenMu()) );
}
public String toString(){
huaJian();
if(getZengShu()!=0)
return getZengShu()+"["+ super.toString() +"]";
else
return "["+ super.toString() +"]";
}
}
博主java萌新,有问题可评论区共同交流学习,欢迎大家交流awa