Java程序语言进阶 ---- 第一周编程题
2017-10-16 17:10
309 查看
**
设计一个表示分数的类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。
你写的类要和以下的代码放在一起,并请勿修改这个代码:
importjava.util.Scanner;
public class Main {
}
注意,你的类的定义应该这样开始:
class Fraction {
也就是说,在你的类的class前面不要有public。
输入格式:
程序运行时会得到四个数字,分别构成两个分数,依次是分子和分母。
输出格式:
输出一些算式。这些输入和输出都是由Main类的代码完成的,你的代码不要做输入和输出。
输入样例:
2 4 1 3
输出样例:
1/2
1/3
5/6
1
1/2
1/3
时间限制:500ms内存限制:32000kb
题目内容:
**设计一个表示分数的类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。
你写的类要和以下的代码放在一起,并请勿修改这个代码:
importjava.util.Scanner;
public class Main {
publicstaticvoid main(String[]args) { Scannerin =new Scanner(System.in); Fractiona =new Fraction(in.nextInt(),in.nextInt()); Fractionb =new Fraction(in.nextInt(),in.nextInt()); a.print(); b.print(); a.plus(b).print(); a.multiply(b).plus(newFraction(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
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 { int a; int b; Fraction(int a,int b) { this.a = a; this.b = b; } double toDouble() { double d = 1.0*a/b; return d; } Fraction plus(Fraction r) { int fa = this.a*r.b + this.b*r.a; int fb = this.b * r.b; return new Fraction(fa,fb); } Fraction multiply(Fraction r) { int fa = this.a*r.a; int fb = this.b*r.b; return new Fraction(fa,fb); } int GetDivisor(int one , int two) { int t = 1; int min = 0; if(one < two) { min = one; } else { min = two; } for(int i = 1; i <= min; i++) { if(one % i == 0 && two % i == 0) { t = i; } } return t; } void print() { int t = GetDivisor(a, b); int fa = a/t; int fb = b/t; if(fa == fb) { System.out.println(fa/fb); } else { System.out.println(fa + "/" + fb); } } }
相关文章推荐
- 黑马程序员_java的语言基础组成进阶(对第三课程序流程控制的总结)
- Java语言进阶笔记 ----第一周 类和对象
- Java进阶:编写跨平台Java程序注意事项
- 梁勇2011JAVA语言程序设计基础篇第16章编程题16.8
- Windows 平台上的使用 Java 语言实现 appium 自动化程序 for Android(完整版)
- 用JAVA语言编写程序:包含两个类,一个类Cricle中包含计算圆周长,面积的方法。在另一个类Compute中给出半径值为10,创建对象,并调用Cricle类中的方法,计算该对象的面积、周长并显示出结
- Java语言程序设计-进阶篇(五)算法基础
- Jcrontab - java定时程序进阶学习-Java基础-Java-编程开发
- 黑马程序员—Java语言基础(程序流程控制-if、switch、for、while、do while、break、continue)
- 网易2015编程题(一用Java实现一个多线程程序将这个10000个数输出到5个不用文件中)
- Java语言实验机器与环境及JDK开发工具简介及Java程序开发步骤
- 程序语言之争与Java社区文化
- 如何更改java程序界面语言为英语
- 读书笔记--超越Java--探讨程序语言的未来
- java语言程序程序设计 第十一章 (11.11、11.12、11.13、11.14、11.15、11.16、11.17)
- 零基础学Java语言(浙江大学) 第二周 编程题
- [JAVA语言学习][小技巧]利用Batch批处理脚本实现控制台快速编译执行JAVA程序
- 基于Java语言的安卓程序编程之一环境搭建2
- Java语言进阶过程(转)
- Java语言程序设计-进阶篇(九)多线程与并行程序设计【下】