Fraction的四季变化之——加法 (含与用户交互框版)

来源:互联网 发布:网络咋骗怎么判刑 编辑:程序博客网 时间:2024/04/29 18:11
/* (程序头部注释开始) </p><p>* 程序的版权和版本声明部分 * Copyright (c) 2011, 烟台大学计算机学院学生                              * 作    者:   李兆庆                         * 完成日期:   2012      年   9    月    9   日 * 输入描述:   * 问题描述及输出:  编写一个Java应用程序,实现功能:分数的加法运算编程* 编程思路:分数相加,两个分数分别是1/5和7/20,它们相加后得11/20。方法是先求出两个分数分母的最小公倍数,通分后,再求两个分子的和,* 最后约简结果分数的分子和分母(如果两个分数相加的结果是4/8,则必须将其化简成最简分数的形式1/2),* 即用分子分母的最大公约数分别除分子和分母。请用四个对话框顺序输入分子和分母,在控制台上输出其运算结果;* 知识扩展:先求gcd(最大公约数)再求lcm(最小公倍数)。 最小公倍数等于两数之积除以最大公约数。 *例:求12和8的最小公倍数。            12和8的最大公约数为4,            12×8÷4=24 ,           所以两数的最小公倍数是24。* 程序头部的注释结束 。*/ import javax.swing.JOptionPane; //此函代码必须包含的哦,与用户交互框的生成有关public class ft {/** * @param args */public static void main(String[] args) {// TODO Auto-generated method stub String str1=JOptionPane.showInputDialog("请输入第一个分数的分子");//用于对话框内的文字输出           int a1=Integer.parseInt(str1);          String str2=JOptionPane.showInputDialog("请输入第一个分数的分母");//用于对话框内的文字输出           int a2=Integer.parseInt(str2);          String str3=JOptionPane.showInputDialog("请输入第二个分数的分子");//用于对话框内的文字输出           int b1=Integer.parseInt(str3);          String str4=JOptionPane.showInputDialog("请输入第二个分数的分母");//用于对话框内的文字输出           int b2=Integer.parseInt(str4); fracAdd(a1,a2,b1,b2);//结果为:11/20//fracSub(1,5,7,20);//分数相减//fracMul(1,5,7,20);//分数相乘//fractDiv(1,5,7,20);//分数相除}static void fracAdd(int first_numerator,int first_denominator,int second_numrator,int second_denominator){//以下代码能够在控制台上显示结果int lcm,gcd,numera,deomina;lcm = lcm(first_denominator,second_denominator);//需要调用求最小公倍数的函数求的最小公倍数numera = (lcm/first_denominator)*first_numerator+(lcm/second_denominator)* second_numrator;//  未化简的分子和deomina = lcm;             //未化简的分母gcd = gcd(numera,deomina); //需要调用求最大公约数的函数numera = numera/gcd;       //化简后的分子deomina = deomina/gcd;     //化简后的分母System.out.println(first_numerator+"/"+first_denominator+"+"+second_numrator+"/"+second_denominator+"="+numera+"/"+deomina);//}//求最大公约数static int gcd(int m,int n){int i = 2;       //定义整型变量i,为循环变量int g, min;min = min(m,n);g = 1;           //最大公约数初始值为1while(i <= min)  //判断条件,一直循环到两个数中较小的那个结束{while (m % i == 0 && n % i == 0){m = m / i;n = n /i;min( m, n );g = g * i;}i++;}return g;}//求最小公倍数函数,其中最小公倍数求法参见程序头部注释“知识扩展”static int lcm(int m,int n){int g, l;g = gcd(m,n);       //调用求最大公约数函数,求得m,n的最大公约数。l = m * n / g;return l;}//求较小值函数static int min(int m,int n){if (m>n){return n;}else{return m;}}}