Java类练习——利用继承实现的带分数

给大家安排一个小练习,分数类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);
        }
}

发表评论

邮箱地址不会被公开。 必填项已用*标注