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

/* (程序头部注释开始)
* 程序的版权和版本声明部分
* 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;
	}
}


结果截图

Java程序设计【4】---分数运算_第1张图片Java程序设计【4】---分数运算_第2张图片

Java程序设计【4】---分数运算_第3张图片Java程序设计【4】---分数运算_第4张图片

Java程序设计【4】---分数运算_第5张图片

 

你可能感兴趣的:(Java程序设计【4】---分数运算)