zoukankan      html  css  js  c++  java
  • 作业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);
      }
     }
    }

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

  • 相关阅读:
    SSL证书的生成方法
    某些系统文件破坏后的修复方式
    dd命令的使用简介
    浅谈访问控制列表(ACL)
    发送端usleep(900)单线程带宽
    1024个读出线程的测试结果
    寻找ROS取数的瓶颈:思路整理(2)
    ROS:32个接收进程的接收带宽
    ROS: 将接收端的接收函数注释掉,TCP只发送,不接受数据时的recv-Q和send-Q长度实验
    ROS:16个接收进程的接收带宽
  • 原文地址:https://www.cnblogs.com/wann/p/5378395.html
Copyright © 2011-2022 走看看