求两个整数相除的结果(循环节)
问题
【求两个整数相除的结果(循环节)】将两个整数进行相除操作,如果是有限结果则正常返回显示,如果是无限循环小数那么找到循环节,将循环节用()括起来,返回一个字符串,举例1/3返回的结果是0.(3),可以使用除号
解决办法
- 将两个数相除得到结果,取余得到余数,如果余数为0那么表示整除了就将结果返回
- 余数不为0,那么声明一个商的list存储商结果,和一个余数list存储余数结果
- 将两个数相除得到结果存入商结果,取余得到余数
- 判断此时余数是否在余数结果中,如果存在那么表示找到循环体调出循环
- 如果不存在那么表示此时结果不是循环节,那么把余数存入余数结果中
- 将余数乘以10倍赋值给除数,然后进入步骤3继续执行
- 调出循环后,对结果进行组合,商List的第一个数是整数部分,然后添加.
- 再遍历取出商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();
}
推荐阅读
- 有句话忍很久了,女生要求买房怎么就物质了()
- 刘婵为何不娶关羽的女儿为妻子,而为何要娶张飞的两个女儿
- 基于爱,才会有“愿望”当“要求”。2017.8.12
- 先放下|先放下 ,求一个好心情
- 说睡
- https请求被提早撤回
- 遇到不正当请求怎么办
- 保姆有偿陪伴(雇主要求过分,保姆没自尊,53岁保姆果断离职)
- 【求助】03
- 有人与我谈格局