作业4:结对编程项目四则运算

我的小组成员是李静远,学号130201210  博客地址http://home.cnblogs.com/u/li457803908/

优缺点:我的缺点是基础比较差,优点是态度积极,不会的地方会上网查询和询问同学。

代码:

package Rational;

import java.util.StringTokenizer;
/**
 * @author sunkun
 * 分数四则运算
 */
public class Calculator {
 int numerator;  // 分子
 int denominator; // 分母
 
 Calculator(){
 }

 Calculator(int a,int b){
  if(a == 0){
   numerator = 0;
   denominator = 1;
  }
  else{
   setNumeratorAndDenominator(a,b);
  }
 }
 
 void setNumeratorAndDenominator(int a, int b){  //
int c = f(Math.abs(a),Math.abs(b));         // 计算最大公约数
  numerator = a / c;
  denominator = b / c;
  if(numerator<0 && denominator<0){
   numerator = - numerator;
   denominator = - denominator;
  }
 }


int getNumerator(){
  return numerator;
 }

 int getDenominator(){
  return denominator;
 }
 
 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;
 }
 
 Calculator add(Calculator r){  // 加法运算
  int a = r.getNumerator();
  int b = r.getDenominator();
  int newNumerator = numerator * b + denominator * a;
  int newDenominator = denominator * b;
  Calculator result = new Calculator(newNumerator,newDenominator);
  return result;
 }
 
 Calculator sub(Calculator r){  // 减法运算
  int a = r.getNumerator();
  int b = r.getDenominator();
  int newNumerator = numerator * b - denominator * a;
  int newDenominator = denominator * b;
  Calculator result = new Calculator(newNumerator,newDenominator);
  return result;
 }
 
 Calculator muti(Calculator r){ // 乘法运算
                                int a = r.getNumerator();
  int b = r.getDenominator();
  int newNumerator = numerator * b - denominator * a;
  int newDenominator = denominator * b;
  Calculator result = new Calculator(newNumerator,newDenominator);
  return result;
 }
                  Calculator div(Calculator r){  // 除法运算
  int a = r.getNumerator();
  int b = r.getDenominator();
  int newNumerator = numerator * b;
  int newDenominator = denominator * a;
  Calculator result = new Calculator(newNumerator,newDenominator);
  return result;
 }

               // 封装了具体运算,主要为对输入进行转换,对输出封装
 public static void compute(String data1,String operation,String data2){
  StringTokenizer fenxi = new StringTokenizer(data1,"/");
     int data1_1 = Integer.parseInt(fenxi.nextToken());
     int data1_2 = Integer.parseInt(fenxi.nextToken());
  fenxi = new StringTokenizer(data2,"/");
     int data2_1 = Integer.parseInt(fenxi.nextToken());
     int data2_2 = Integer.parseInt(fenxi.nextToken());
         
  Calculator r1 = new Calculator(data1_1,data1_2);
  Calculator r2 = new Calculator(data2_1,data2_2);
  
  Calculator result;
  int a,b;
  if(operation.equals("+")){
    result = r1.add(r2);
   a = result.getNumerator();
    b = result.getDenominator();
   System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
}

  if(operation.equals("-")){
    result = r1.sub(r2);
   a = result.getNumerator();
    b = result.getDenominator();
   System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
  }
  
  if(operation.equals("*")){
    result = r1.muti(r2);
   a = result.getNumerator();
    b = result.getDenominator();
   System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
  }
  
  if(operation.equals("/")){
    result = r1.div(r2);
   a = result.getNumerator();
    b = result.getDenominator();
   System.out.println(data1+" "+operation+" " +data2+" = " + a + "/" + b);
  }
 }
}

总结:作业做得不是很好,大部分都是询问其他同学,不过我们也努力完成了。

转载于:https://www.cnblogs.com/wann/p/5378395.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值