Java程序设计【4】---分数运算

来源:互联网 发布:智慧树网络选修课 编辑:程序博客网 时间:2024/04/29 05:25

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* Copyright (c) 2011, 烟台大学计算机学院学生
* All rights reserved.
* 文件名称:        分数运算                  
* 作 者: 王琳
* 完成日期:  2013  年 2  月 16 日
* 版 本 号:    2013.02.01

* 对任务及求解方法的描述部分
* 输入描述:
* 问题描述:

编程思路:分数相加,两个分数分别是1/5和7/20,它们相加后得11/20。方法是先求出两个分数分母的最小公倍数,通分后,再求两个分子的和,最后约简结果分数的分子和分母(如果两个分数相加的结果是4/8,则必须将其化简成最简分数的形式1/2),即用分子分母的最大公约数分别除分子和分母。请用四个对话框顺序输入分子和分母,在控制台上输出其运算结果。

* 程序头部的注释结束
*/

源代码:

package wang;import javax.swing.JOptionPane;public class FractionalNumber //FractionalNumber  分数{/* * 实现分数的加减乘除运算 */public static void main(String[] args){String str1 = JOptionPane.showInputDialog("请输入第一个数的分子:");int nume1 = Integer.parseInt(str1);String str2 = JOptionPane.showInputDialog("请输入第一个数的分母:");int deno1 = Integer.parseInt(str2);String str3 = JOptionPane.showInputDialog("请输入第二个数的分子:");int nume2 = Integer.parseInt(str3);String str4 = JOptionPane.showInputDialog("请输入第二个数的分母:");int deno2 = Integer.parseInt(str4);FractionNumber_Add(nume1,deno1,nume2,deno2);FractionNumber_Sub(nume1,deno1,nume2,deno2);FractionNumber_Mul(nume1,deno1,nume2,deno2);FractionNumber_Div(nume1,deno1,nume2,deno2);}//numerator = nume  分子    denominator=deno  分母public static void FractionNumber_Add(int nume1,int deno1,int nume2,int deno2)  //加法 {System.out.print(nume1+"/"+deno1+"+"+nume2+"/"+deno2+"=");int i = lcm(deno1,deno2);int nume = nume1*(i/deno1)+nume2*(i/deno2);int deno = i;int m = gcd(nume,deno);nume = nume/m;deno = deno/m;System.out.println(nume+"/"+deno);}public static void FractionNumber_Sub(int nume1,int deno1,int nume2,int deno2)  //减法{System.out.print(nume1+"/"+deno1+"-"+nume2+"/"+deno2+"=");int i = lcm(deno1,deno2);int nume = nume1*(i/deno1)-nume2*(i/deno2);int deno = i;int m = gcd(nume,deno);nume = nume/m;deno = deno/m;System.out.println(nume+"/"+deno);}public static void FractionNumber_Mul(int nume1,int deno1,int nume2,int deno2)  //乘法{System.out.print(nume1+"/"+deno1+"*"+nume2+"/"+deno2+"=");int nume = nume1*nume2;int deno = deno1*deno2;int i = gcd(nume,deno);nume = nume/i;deno = deno/i;System.out.println(nume+"/"+deno);}public static void FractionNumber_Div(int nume1,int deno1,int nume2,int deno2)  //除法{System.out.print(nume1+"/"+deno1+"*"+nume2+"/"+deno2+"=");int nume = nume1*deno2;int deno = deno1*nume2;int i = gcd(nume,deno);nume = nume/i;deno = deno/i;System.out.println(nume+"/"+deno);}static int gcd(int n,int m)  //求最大公约数{int i;for(i=m;;i--){if(n%i==0 && m%i==0){break;}}return i;}static int lcm(int n,int m)   //求最小公倍数{int i;for(i=m;;i++){if(i%n==0 && i%m==0){break;}}return i;}}


结果截图