给大家安排一个小练习,分数类Fenshu的编写,可以在执行下面代码时:
public class Exec {
public static void main(String[] args) {
Fenshu fs1 = new Fenshu(2, 4);
System.out.println(fs1);
fs1.setFenzi(6);
System.out.println(fs1);
}
}
显示
1/2
3/1
其中约分功能可以自己实现,也可以参考:
private void yuefen() {
int minValue = Math.min(Math.abs(fenzi), Math.abs(fenmu));
for (int i = minValue; i >= 1; i--) {
if (fenzi % i == 0 && fenmu % i == 0) {
fenzi = fenzi / i;
fenmu = fenmu / i;
break;
}
}
}
}
进一步按照继承的方法再定义一个带分数类DaiFenshu,可以在执行下面代码时:
public class Exec {
public static void main(String[] args) {
DaiFenshu dfs1 = new DaiFenshu(1, 2, 4);
System.out.println(dfs1);
dfs1.setFenzi(6);
System.out.println(dfs1);
}
}
显示
1(1/2)
1(3/1)
代码参考:
package mp;
class Fenshu {
private int fenzi;
private int fenmu;
public Fenshu() {
}
public Fenshu(int fenzi, int fenmu) {
setFenzi(fenzi);
setFenmu(fenmu);
}
public int getFenzi() {
return fenzi;
}
public void setFenzi(int fenzi) {
this.fenzi = fenzi;
yuefen();
}
public int getFenmu() {
return fenmu;
}
public void setFenmu(int fenmu) {
this.fenmu = fenmu;
yuefen();
}
public String toString() {
return fenzi + "/" + fenmu;
}
private void yuefen() {
int minValue = Math.min(Math.abs(fenzi), Math.abs(fenmu));
for (int i = minValue; i >= 1; i--) {
if (fenzi % i == 0 && fenmu % i == 0) {
fenzi = fenzi / i;
fenmu = fenmu / i;
break;
}
}
}
}
class DaiFenshu extends Fenshu {
private int zhengshu;
public DaiFenshu() {
}
public DaiFenshu(int zhengshu, int fenzi, int fenmu) {
super(fenzi, fenmu);
setZhengshu(zhengshu);
}
public int getZhengshu() {
return zhengshu;
}
public void setZhengshu(int zhengshu) {
this.zhengshu = zhengshu;
}
public String toString() {
return zhengshu + "(" + super.toString() + ")";
}
}
public class Exec {
public static void main(String[] args) {
DaiFenshu dfs1 = new DaiFenshu(1, 2, 4);
System.out.println(dfs1);
dfs1.setFenzi(6);
System.out.println(dfs1);
}
}