分数
来源:互联网 发布:阿里云服务器怎样退款 编辑:程序博客网 时间:2024/04/27 16:35
题目内容:
我们在题目说明中给出了一部分代码,你需要在这部分代码的基础上,按照题目说明编写代码,然后将两部分代码一起提交。
设计一个表示分数的类Fraction。这个类用两个int类型的变量分别表示分子和分母。
这个类的构造函数是:
Fraction(int a, int b)
构造一个a/b的分数。
这个类要提供以下的功能:
double toDouble();
将分数转换为double
Fraction plus(Fraction r);
将自己的分数和r的分数相加,产生一个新的Fraction的对象。注意小学四年级学过两个分数如何相加的哈。
Fraction multiply(Fraction r);
将自己的分数和r的分数相乘,产生一个新的Fraction的对象。
void print();
将自己以“分子/分母”的形式输出到标准输出,并带有回车换行。如果分数是1/1,应该输出1。当分子大于分母时,不需要提出整数部分,即31/30是一个正确的输出。
注意,在创建和做完运算后应该化简分数为最简形式。如2/4应该被化简为1/2。
你写的类要和以下的代码放在一起,并请勿修改这个代码:
import java.util.Scanner;
public class Main {
public static void main(String[] args) { Scanner in = new Scanner(System.in); Fraction a = new Fraction(in.nextInt(), in.nextInt()); Fraction b = new Fraction(in.nextInt(),in.nextInt()); a.print(); b.print(); a.plus(b).print(); a.multiply(b).plus(new Fraction(5,6)).print(); a.print(); b.print(); in.close();}
}
注意,你的类的定义应该这样开始:
class Fraction {
也就是说,在你的类的class前面不要有public。
输入格式:
程序运行时会得到四个数字,分别构成两个分数,依次是分子和分母。
输出格式:
输出一些算式。这些输入和输出都是由Main类的代码完成的,你的代码不要做输入和输出。
输入样例:
2 4 1 3
输出样例:
1/2
1/3
5/6
1
1/2
1/3
时间限制:500ms内存限制:32000kb
语言:java
import java.util.Scanner;public class Main { public static void main(String[] args) { Scanner in = new Scanner(System.in); Fraction a = new Fraction(in.nextInt(), in.nextInt()); Fraction b = new Fraction(in.nextInt(),in.nextInt()); a.print(); b.print(); a.plus(b).print(); a.multiply(b).plus(new Fraction(5,6)).print(); a.print(); b.print(); in.close(); }}class Fraction { private int x =0; private int y =0; public Fraction(int nextInt, int nextInt2) { int t = gcd(nextInt,nextInt2); x = nextInt/t; y = nextInt2/t; } public int gcd(int x ,int y){ int gcd =1; int min =x<y?x:y; int max =x<y?y:x; //辗转相除法 do { gcd = max%min; max = min; min = gcd; }while(gcd !=0); gcd = max;// System.out.println(x +"和" +y +"的gcd:"+gcd); return gcd; } public void print() { if(x==y) { System.out.println(1); } else System.out.printf("%d/%d\n", x,y); } public Fraction plus(Fraction r) { //分数相加 int aa = this.x*r.y; int bb = this.y*r.x;// int a= this.x*r.y +this.y+r.x; /*这一行编程出错不知为何,就换了个面的写法。*/ int a= aa+bb; int b=this.y *r.y; int t = gcd(a,b); return new Fraction(a/t,b/t); } public Fraction multiply(Fraction r) { //分数相乘 int a = this.x*r.x; int b = this.y*r.y; int t = gcd(this.x,this.y); return new Fraction(a/t,b/t); }}
- 分数
- 分数
- 分数
- 分数
- 分数
- 分数
- 分数
- 分数
- 分数相加-
- 埃及分数
- 分数规划
- 回文分数
- 没分数
- 分数显示
- 分数计算
- 埃及分数
- 埃及分数
- 分数拆分
- “我只能冒险”:每个IT人心中都有一个梵·高
- linux网络编程:广播编程
- Linux常用命令学习
- 二叉树的最小深度-LintCode
- PS需要用到数位板吗,PS中怎么设置和运用手绘板
- 分数
- 怎么使用crontab?crontab常用指令
- 451. Sort Characters By Frequency
- JavaScript设计模式:方法的链式调用
- M4a音频文件解析
- Android AlarmManagerService TIME_TICK 广播发送流程
- ObjectAnimator介绍
- Java反射机制详解
- 给nginx配置https服务器并反向代理php