面向对象-Java MOOC翁恺老师第一次作业
由于看这个慕课的时候已经结课了,没有办法提交查看代码是否正确。。。先保存一下,以后再提交改错
欢迎批评指正!
题目链接:https://www.icourse163.org/learn/ZJU-1001542001#/learn/ojhw?id=1004600071
题目详情:
题目内容:
设计一个表示分数的类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(,)).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
我的代码:
- 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(,)).print();
- a.print();
- b.print();
- in.close();
- }
- }
- class Fraction{
- int x, y;//x是分子,y是分母
- Fraction(int a, int b){
- this.x = a;
- this.y = b;
- }
- double toDouble(){
- return (double)x/y;
- }
- Fraction plus(Fraction r) {
- Fraction p = new Fraction(, );
- p.x = x * r.y + y * r.x;
- p.y = y * r.y;
- return p;
- }
- Fraction multiply(Fraction r) {
- Fraction p = new Fraction(, );
- p.x = x * r.x;
- p.y = y * r.y;
- return p;
- }
- void print() {
- int p = x, q = y, mod;
- if(p > q) {
- mod = p % q;
- }
- else {
- mod = q % p;
- }
- while(mod != ) {
- if(p < q) {
- q = mod;
- mod = p % q;
- }
- else {
- p = mod;
- mod = q % p;
- }
- }
- if(p > q) {
- mod = q;
- }
- else {
- mod = p;
- }
- x /= mod;
- y /= mod;
- if(y == ) {
- System.out.println(x);
- }
- else {
- System.out.println(x + "/" + y);
- }
- }
- }
有任何问题请站内联系或邮箱zhuo2333@qq.com
面向对象-Java MOOC翁恺老师第一次作业的更多相关文章
- 慕课零基础学java语言翁恺老师——第二周编程题
1.时间换算(5分) 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如果 ...
- 慕课零基础学java语言翁恺老师——第一周编程题
温度转换(5分) 题目内容: 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示华氏温度. 程序的输入是一个整数,表示华氏温度.输出 ...
- 听翁恺老师mooc笔记(16)--程序设计与C语言
问题1:计算机遍布生活的各个方面,若你需要一个功能可以下载APP,我们需要的大部分功能都可以找到对应的APP,如果没有可以自己写一个软件,但是很少人需要这么做,那么我们为什么学习计算机编程语言? 学习 ...
- 听翁恺老师mooc笔记(8)--字符串2
字符串的赋值 字符串的输入与输出 对C语言的基础类型,比如int.double等类型,scanf.printf有专门的格式转换,而对字符串,scanf.printf使用%s格式字符进行输入与输出.当使 ...
- 听翁恺老师mooc笔记(14)--格式化的输入与输出
关于C语言如何做文件和底层操作: 文件操作,从根本上说,和C语言无关.这部分的内容,是教你如何使用C语言的标准库所提供的一系列函数来操作文件,最基本的最原始的文件操作.你需要理解,我们在这部分所学习的 ...
- 听翁恺老师mooc笔记(4)--指针的应用场景
指针应用场景一:交换两个变量的值 在学习函数时,交换两个数的值,做一个swap函数,传递值进去,也可以将两个值交换过来,没问题,可是离开swap就没有用了,为什么?因为传进去的是两个值. #inclu ...
- 听翁恺老师mooc笔记(1)--为何选择学习C
知识点1:众多编程语言,为何选择C? 现在我们的同学喜欢java,也参加很多java的培训班,java是比较热门,但是C语言在工业界依然有重要的地位,在很多领域无可替代,几乎所有和硬件打交道的地方都得 ...
- 听翁恺老师mooc笔记(15)--文件的输入与输出
<>重定向 如果使用标准的printf输出,有一个比较简便的方法,可以将程序的结果写入一个文件.使用<和>符号,将程序运行结果重定向到文件中去,具体使用到的代码如下: ./te ...
- 听翁恺老师mooc笔记(13)--类型定义和联合
typedef 虽然我们知道使用struct这个关键字定义一个结构类型,然后可以使用该结构类型定义变量.但是每次要使用的时候都需要带着struct这个关键字,那么如何摆脱这个关键字哪?C语言提供了一个 ...
随机推荐
- Node js redis
const redis = require('redis');//redis , '172.16.4.2'); //redis操作 client.set("hello", &quo ...
- resource links
http://cenalulu.github.io/linux/all-about-cpu-cache/
- windows jdk安装
先去官网下载安装包 x86 32位 x64 64位 下载地址 安装jdk 安装目录默认c盘 配置系统环境 JAVA_HOME环境变量.作用:它指向jdk的安装目录,Eclipse/NetBeans/T ...
- SFTP服务的使用!!
在Client端安装Xshell或者SecureCRT等具有SFTP文件传输功能的软件,在服务器端安装好SFTP服务并启动,就可以用SFTP传输文件了! from: http://www.cnbl ...
- pdfjs预览pdf文件的两种方式(可复制)
1.以图片形式进行展示: version:采用1.x版本,2.0版本会有字体显示不完整的问题:参考 这里使用1.8.170 <script th:src="@{/pdfjs/build ...
- 大白话讲解Promise
去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范.作为ES6中最重要的特性之一,我们有必要掌握并理解透彻.本文将由浅到深,讲解Promise的基本 ...
- WinForm 中 comboBox控件之数据绑定
一.IList 现在我们直接创建一个List集合,然后绑定 1 IList<string> list = new List<string>(); 2 list.Add(&quo ...
- vimtutor——vim官方教程
=============================================================================== = 欢 迎 阅 ...
- Linux yun命令使用报错:File "/usr/bin/yum", line 30 except KeyboardInterrupt, e:
原文参考:https://www.cnblogs.com/caiji/p/7891923.html 使用yum更新perl源,报错 问题出现原因: yum包管理是使用python2.x写的,将pyth ...
- IEnumerabl 和 IEnumertator
public interface IEnumerable { IEnumerator GetEnumerator(); } IEnumerator 接口 public inte ...