有理循环小数

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());

    }



}

 

你可能感兴趣的:(循环)