[size=small][color=olive][b]
1/7 = 0.142857142... 是个无限循环小数。
任何有理数都可以表示为无限循环小数的形式。
本题目要求即是:给出一个数字的循环小数表示法。
例如:
输入:
1,5
则输出:
0.2
输入:
1,7
则输出:
0.[142857]
输入:
7,6
则输出:
1.1[6]
用户输入的格式是:
整数,整数
每个整数范围均为:1~1000
程序输出两个整数做除法产生的小数或无限循环小数(循环节用方括号括起)。
要求考生把所有类写在一个文件中。
调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。请不要使用package语句。
另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。[/b][/color][/size]
1/7 = 0.142857142... 是个无限循环小数。
任何有理数都可以表示为无限循环小数的形式。
本题目要求即是:给出一个数字的循环小数表示法。
例如:
输入:
1,5
则输出:
0.2
输入:
1,7
则输出:
0.[142857]
输入:
7,6
则输出:
1.1[6]
用户输入的格式是:
整数,整数
每个整数范围均为:1~1000
程序输出两个整数做除法产生的小数或无限循环小数(循环节用方括号括起)。
要求考生把所有类写在一个文件中。
调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。
相关的工程文件不要拷入。请不要使用package语句。
另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。[/b][/color][/size]
package 循环小数;
public class Main {
public static void main(String[] arg){
double a =5;
double b = 9;
f(a, b);
}
//处理数据
public static void f(double a ,double b){
double c = a/b;
String str = String.valueOf(c);
// System.out.println(str);
//取出整数和小数部分
int index = str.indexOf(".");
String integer = str.substring(0,index);
String decimals = str.substring(index+1, str.length()-index+1);
// System.out.println(decimals);
// 对小数部分进行循环取循环体;
String temp = "";
String forTempString = "";
for(int i=0;i<decimals.length()-1;i++){
String ch = ""+decimals.charAt(i);
if(!temp.contains(ch)){
temp += ""+ch;
}else{
forTempString+=ch;
}
}
// System.out.println(temp+" "+forTempString);
String result =str; //记录最后结果
for(int i=temp.length()-1;i>=0;i--){
//从最后一位开始取 字符,然后在forTempString中取相同的字符进行比较,如果相同,则该基数为循环体;剩余temp中为取的部分为非循环体;
String base = temp.substring(i, temp.length());
int n = temp.length()-i; //取字符的数量;
if(forTempString.substring(0, n).equals(base)){
//此时的base 就是循环体;
// System.out.println(base);
//当前的i的值能得出非循环体,组合得到最后结果
// System.out.println(temp.subSequence(0, i));
result = integer+"."+temp.substring(0, i)+"["+base+"]";
break;
}
}
System.out.println(result);
}
}