package homework2;
public class Rational {
int num; //分子
int den; //分母
Rational(){
}
Rational(int a,int b){
if(a==0){
num=0;
den=1;
}
else{
setNumAndDen(a,b);
}
}
void setNumAndDen(int a,int b) { //设置分子和分母
int c=f(Math.abs(a),Math.abs(b)); //计算最大公约数
num=a/c;
den=b/c;
if(num<0&&den<0) {
num=-num;
den=-den;
}
}
int getNum() {
return num;
}
int getDen() {
return den;
}
int f(int a,int b) { //求a和b的最大公约数
if(a<b) {
int c=a;
a=b;
b=c;
}
int r=a%b;
while(r!=0) {
a=b;
b=r;
r=a%b;
}
return b;
}
Rational add(Rational r) { //加法运算
int a=r.getNum();
int b=r.getDen();
int newNum=num*b+den*a;
int newDen=den*b;
Rational result=new Rational(newNum,newDen);
return result;
}
Rational sub(Rational r) { //减法运算
int a=r.getNum();
int b=r.getDen();
int newNum=num*b-den*a;
int newDen=den*b;
Rational result=new Rational(newNum,newDen);
return result;
}
}
以上为类的封装
package homework2;
import java.util.Scanner;
public class MainClass {
public static void main(String args[]) {
Scanner scan = new Scanner(System.in);
int i = 0;
System.out.print("输入第一个数的分子:");
i = scan.nextInt();
int j = 0;
System.out.print("输入第一个数的分母:");
j = scan.nextInt();
int k = 0;
System.out.print("输入第二个数的分子:");
k = scan.nextInt();
int l = 0;
System.out.print("输入第二个数的分母:");
l = scan.nextInt();
scan.close();
Rational r1=new Rational(i,j);
Rational r2=new Rational(k,l);;
Rational result=r1.add(r2);
int a=result.getNum();
int b=result.getDen();
System.out.println( i+"/"+j+"+"+k+"/"+l+" = "+a+"/"+b);
result=r1.sub(r2);
a=result.getNum();
b=result.getDen();
System.out.println( i+"/"+j+"-"+k+"/"+l+ " = "+a+"/"+b);
}
}
以上为主函数
可以实现分数加减法