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

问题 【求两个整数相除的结果(循环节)】将两个整数进行相除操作,如果是有限结果则正常返回显示,如果是无限循环小数那么找到循环节,将循环节用()括起来,返回一个字符串,举例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 quotientList = new ArrayList<>(); List 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=0) sb.append(")"); return sb.toString(); }

    推荐阅读