package com.zh.test; /* 有理循环小数 1/7 = 0.142857142... 是个无限循环小数。 任何有理数都可以表示为无限循环小数的形式。 本题目要求即是:给出一个数字的循环小数表示法。 例如: 输入: 1,5 则输出: 0.2 输入: 1,7 则输出: 0.[142857] 输入: 7,6 则输出: 1.1[6] 用户输入的格式是: 整数,整数 每个整数范围均为:1~1000 程序输出两个整数做除法产生的小数或无限循环小数(循环节用方括号括起)。 */ import java.util.ArrayList; public class Test11 { /** * @param args */ public static void main(String[] args) { // TODO Auto-generated method stub f(3,9); } public static void f(int m,int n){ ArrayList<Integer> list=new ArrayList<Integer>();//记录余数 StringBuffer buffer=new StringBuffer();//添加商 也就是结果 buffer.append(m/n+"."); m = m%n; //得到余数 while(m != 0){ //余数为0 if(list.contains(m)){ System.out.println("ddd"); int i=0; for(;i<buffer.length();i++){ if(buffer.charAt(i) - '0' == m*10/n){ break; } } buffer.insert(i, '['); buffer.insert(buffer.length(), ']'); break; }else{ list.add(m); //添加余数 buffer.append(m*10/n); //添加商 } m = m*10% n; } System.out.println(buffer.toString()); } }