java编程练习 1.从标准输入中输入一个小数,编写程序将其转换成相应的分数显示,即转换为几又几分之几。

一、问题描述
从标准输入中输入一个小数,编写程序将其转换成相应的分数显示,即转换为几又几分之几。
要求:
1、输入的小数包括整数部分、小数点和小数部分;整数部分和小数部分最多有7位数字;整数部分可以为0,若整数部分大于等于1,则其最高位不为0;小数部分的末尾数字不为零。
2、输出的分数应为最简分数,由三个数字组成:第一个数字代表整数部分(若分数小于1,则为0,否则输出的整数的最高位不为0),第二个数字代表分子,第三个数字代表分母,分子比分母小且不能再约分。

【输入形式】
从标准输入中输入一个小数后打回车。

【输出形式】
将三个整数输出到标准输出,并且分别以一个空格分隔,最后一个整数后没有空格,有回车换行。

【样例1输入】
0.35

【样例1输出】
0 7 20

【样例2输入】
1050.0144

【样例2输出】
1050 9 625

【样例说明】
样例1中输入的小数为0.35,整数部分为0,小数部分转换为分数为35/100,约分成最简分数为7/20。


样例2中输入的小数为1050.0144,整数部分为1050,小数部分转换为分数为144/10000,约分成最简分数为9/625。

package homework;

import java.util.Scanner;
public class xiaoChangeTofen {
	public static void main(String[] args) {
		String read,xiaoshu;
		double x,y;
		int n;
		int a;
		int count=2;
		int fm,fz;
		Scanner sc=new Scanner(System.in);
		read=sc.nextLine();
//		if(read.length()>8) {//若长度大于8则取前8个字符
//			read=read.substring(0, 8);
//		}
		x=Double.parseDouble(read);//x为长度整数加小数不大于7的数
		n=(int)x;//整数部分
		a=read.indexOf(".");
		xiaoshu=read.substring(a);//获取小数部分字符串
		y=Double.parseDouble("0"+xiaoshu);//小数部分
		System.out.println(y);
		while((y*count%1)!=0) {//逆向思考,商乘被除数为整数的最小被除数即使最简分数的分母,积是分子
			count++;
		}
		fz=(int)(y*count);
		fm=count;
		System.out.println(n+" "+fz+" "+fm);
		
	}

}

你可能感兴趣的:(java,开发语言)