———-android培训、java培训、java学习型技术博客、期待与您交流!——-
- 上次考试考一题分数题,看了半天没明白,分析了一下,编程考的还是思想。
<span style="font-size:18px;">package string.demo; //写一个分数类,实现2个分数相加,相减,相乘,相除,并约分 /* * 思路:1.写一个分数类,成员变量有分子,分母,一个带参构造; * 2.相加:新分子=分子A*分母B+分子B*分母A * 新分母=分母A*分母B; * 3.相减:新分子=分子A*分母B-分子B*分母A; * 新分母=分母A*分母B; * 4.相乘:新分子=分子A*分子B; * 新分母=分母A*分母B; * 5.相除:新分子=分子A*分母B; * 新分母=分母A*分子B; * 6.约分:求公约数x:分子和分母都%X==0 * <strong>重点在每一次做完算术后怎么约分? * 采取循环遍历的模式,用三元运算符来取变量的初始值x,如果分子,分母都能被模尽,说明这个x是公约数。</strong> * */ public class Demo2 { public static void main(String[] args) { Fen f1 = new Fen(6,9); Fen f2 = new Fen(3,9); Fen d=f1.getJia(f2); System.out.println(d); Fen d1=f1.getJian(f2); System.err.println(d1); Fen d3=f1.getChen(f2); System.err.println(d3); Fen d4=f1.getChu(f2); System.err.println(d4); } } //分数类,成员变量:分子,分母。相加的方法,相减的方法,向乘的方法,相除的方法,约分 class Fen{ int z;//分子 int m;//分母 public Fen(int z,int m){ this.z=z; this.m=m; } //相加 public Fen getJia(Fen f){ int newfz=f.z*m+z*f.m; int newfm=f.m*m; return yueFen(newfz,newfm); } //相减 public Fen getJian(Fen f){ int newfz=f.z*m-z*f.m; int newfm=f.m*m; return yueFen(newfz,newfm); } //相乘 public Fen getChen(Fen f){ int newfz=z*f.z; int newfm=m*f.m; return yueFen(newfz,newfm); } //相除 public Fen getChu(Fen f){ int newfz=z*f.m; int newfm=m*f.z; return yueFen(newfz,newfm); } //约分 <strong>private Fen yueFen(int newfz, int newfm) { for(int x=(newfz>newfm?newfz:newfm);x>0;x--){//获取分子或者分母中大的那个数做为公约数的初始值 if(newfz%x==0&&newfm%x==0){//如果分子和分母都能被x模尽,那么x就是公约数 newfz=newfz/x; newfm=newfm/x; } } return new Fen(newfz,newfm);</strong> } public String toString(){ return "newFen="+z+"/"+m; } } </span>