首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

关于 分数合家欢(加减乘除方法)java版含交互对话框

2012-09-17 
关于分数全家福(加减乘除方法)java版含交互对话框/* (程序头部注释开始) /pp* 程序的版权和版本声明部

关于 分数全家福(加减乘除方法)java版含交互对话框

/* (程序头部注释开始) </p><p>* 程序的版权和版本声明部分  * Copyright (c) 2011, 烟台大学计算机学院学生                               * 作    者:   李兆庆                          * 完成日期:   2012      年             9    月         13   日  * 输入描述:    * 问题描述及输出:  编写一个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 Fraction {       /**      * @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(a1,a2,b1,b2);//分数相减           fracMul(a1,a2,b1,b2);//分数相乘           fractDiv(a1,a2,b1,b2);//分数相除         }      //定义分数相加函数       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 void fracSub(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 void fracMul(int first_numerator,int first_denominator,int second_numrator,int second_denominator){        int z, m,gcd,numera,deomina;         z = first_numerator * second_numrator;        m = first_denominator * second_denominator;        gcd = gcd(z,m);        numera = z / gcd;        deomina = m / gcd;        System.out.println("分数乘法运算:("+first_numerator+"/"+first_denominator+")*("+second_numrator+"/"+second_denominator+")="+numera+"/"+deomina);    }    //定义分数相除函数        static void fractDiv(int first_numerator,int first_denominator,int second_numrator,int second_denominator){        int z,a, m,gcd,numera,deomina;        a = second_denominator;        second_denominator = second_numrator;        second_numrator = a;            z = first_numerator * second_numrator;        m = first_denominator * second_denominator;            gcd = gcd(z,m);        numera = z / gcd;        deomina = m / 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;           //最大公约数初始值为1           while(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;          }      }        } 

关于  分数合家欢(加减乘除方法)java版含交互对话框

热点排行