求两个整数相除的结果(循环节)

问题

将两个整数进行相除操作,如果是有限结果则正常返回显示,如果是无限循环小数那么找到循环节,将循环节用()括起来,返回一个字符串,举例1/3返回的结果是0.(3),可以使用除号

解决办法

  1. 将两个数相除得到结果,取余得到余数,如果余数为0那么表示整除了就将结果返回
  2. 余数不为0,那么声明一个商的list存储商结果,和一个余数list存储余数结果
  3. 将两个数相除得到结果存入商结果,取余得到余数
  4. 判断此时余数是否在余数结果中,如果存在那么表示找到循环体调出循环
  5. 如果不存在那么表示此时结果不是循环节,那么把余数存入余数结果中
  6. 将余数乘以10倍赋值给除数,然后进入步骤3继续执行
  7. 调出循环后,对结果进行组合,商List的第一个数是整数部分,然后添加.
  8. 再遍历取出商list中的数据,其中需要注意有无循环节,有循环节的部分需要在循环节之前加入小括号,最后再加入大括号,因此需要记录循环节的位置,循环节位置有list.index函数找寻

源代码

public static String divide(int dividend, int divisor) {
        if (dividend<0||divisor<0) return "";
        if (dividend % divisor == 0) {
            int result = dividend / divisor;
            return String.valueOf(result);
        }
        List<Integer> quotientList = new ArrayList<>();
        List<Integer> remainList = new ArrayList<>();
        int position = -1;
        while (true) {
            quotientList.add(dividend/divisor);
            int remain = dividend % divisor;
            if (remain==0) break;
            position = remainList.indexOf(remain);
            if (position>=0) break;
            else {
                remainList.add(remain);
            }
            dividend = remain*10;
        }
        StringBuilder sb = new StringBuilder();
        sb.append(quotientList.get(0));
        sb.append(".");
        for (int i=1; i<quotientList.size(); i++) {
            if (i==position+1) sb.append("(");
            sb.append(quotientList.get(i));
        }
        if (position>=0) sb.append(")");
        return sb.toString();
    }
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第一章数和数的运算 一概念 (一)整数 1整数的意义 自然数和0都是整数。 2自然数 我们在数物体的时候,用来表示...
    meychang阅读 2,672评论 0 5
  • 一、Python简介和环境搭建以及pip的安装 4课时实验课主要内容 【Python简介】: Python 是一个...
    _小老虎_阅读 5,848评论 0 10
  • Lua 5.1 参考手册 by Roberto Ierusalimschy, Luiz Henrique de F...
    苏黎九歌阅读 13,949评论 0 38
  • 简直是十二月以来一直在水逆。为了早日摆脱这种阴郁的心情,所以特别需要少女心原子弹般的炸裂。然后宿舍就出现所谓我老爸...
    MooncakeGirl阅读 878评论 0 1
  • 这些日子,两个宝贝都感冒了。家里有大小宝就是这样,一般情况下,只要其中一个感冒了,另外一个过几天也会跟着感冒。 所...
    快乐宝贝呀阅读 442评论 1 3