由于看这个慕课的时候已经结课了,没有办法提交查看代码是否正确。。。先保存一下,以后再提交改错

欢迎批评指正!

题目链接: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翁恺老师第一次作业的更多相关文章

  1. 慕课零基础学java语言翁恺老师——第二周编程题

    1.时间换算(5分) 题目内容: UTC是世界协调时,BJT是北京时间,UTC时间相当于BJT减去8.现在,你的程序要读入一个整数,表示BJT的时和分.整数的个位和十位表示分,百位和千位表示小时.如果 ...

  2. 慕课零基础学java语言翁恺老师——第一周编程题

    温度转换(5分) 题目内容: 写一个将华氏温度转换成摄氏温度的程序,转换的公式是: °F = (9/5)*°C + 32 其中C表示摄氏温度,F表示华氏温度. 程序的输入是一个整数,表示华氏温度.输出 ...

  3. 听翁恺老师mooc笔记(16)--程序设计与C语言

    问题1:计算机遍布生活的各个方面,若你需要一个功能可以下载APP,我们需要的大部分功能都可以找到对应的APP,如果没有可以自己写一个软件,但是很少人需要这么做,那么我们为什么学习计算机编程语言? 学习 ...

  4. 听翁恺老师mooc笔记(8)--字符串2

    字符串的赋值 字符串的输入与输出 对C语言的基础类型,比如int.double等类型,scanf.printf有专门的格式转换,而对字符串,scanf.printf使用%s格式字符进行输入与输出.当使 ...

  5. 听翁恺老师mooc笔记(14)--格式化的输入与输出

    关于C语言如何做文件和底层操作: 文件操作,从根本上说,和C语言无关.这部分的内容,是教你如何使用C语言的标准库所提供的一系列函数来操作文件,最基本的最原始的文件操作.你需要理解,我们在这部分所学习的 ...

  6. 听翁恺老师mooc笔记(4)--指针的应用场景

    指针应用场景一:交换两个变量的值 在学习函数时,交换两个数的值,做一个swap函数,传递值进去,也可以将两个值交换过来,没问题,可是离开swap就没有用了,为什么?因为传进去的是两个值. #inclu ...

  7. 听翁恺老师mooc笔记(1)--为何选择学习C

    知识点1:众多编程语言,为何选择C? 现在我们的同学喜欢java,也参加很多java的培训班,java是比较热门,但是C语言在工业界依然有重要的地位,在很多领域无可替代,几乎所有和硬件打交道的地方都得 ...

  8. 听翁恺老师mooc笔记(15)--文件的输入与输出

    <>重定向 如果使用标准的printf输出,有一个比较简便的方法,可以将程序的结果写入一个文件.使用<和>符号,将程序运行结果重定向到文件中去,具体使用到的代码如下: ./te ...

  9. 听翁恺老师mooc笔记(13)--类型定义和联合

    typedef 虽然我们知道使用struct这个关键字定义一个结构类型,然后可以使用该结构类型定义变量.但是每次要使用的时候都需要带着struct这个关键字,那么如何摆脱这个关键字哪?C语言提供了一个 ...

随机推荐

  1. 使用HttpWebRequest请求https链接时,无法访问的问题,设置ServicePointManager.SecurityProtocol安全协议

    //请求前设置一下使用的安全协议类型 System.Net if (url.StartsWith("https", StringComparison.OrdinalIgnoreCa ...

  2. BootstrapTable,选中某几行,获取其数据并进行后台处理。以及其他的属性使用。

    参考链接:bootstrap Table API 中文版 Bootstrap Table 选中某几行,获取其数据 Ajax传递数组,struts2接收数组 1.首先将复选框搞出来,<table ...

  3. IIS处理并发请求设置

    一个ASP.NET项目在部署到生产环境时,当用户并发量达到200左右时,IIS出现了明显的请求排队现象,发送的请求都进入等待,无法及时响应,系统基本处于不可用状态.   当发现请求明显延迟,没有被即时 ...

  4. hashMap源码学习记录

    hashMap作为java开发面试最常考的一个题目之一,有必要花时间去阅读源码,了解底层实现原理. 首先,让我们看看hashMap这个类有哪些属性 // hashMap初始数组容量 static fi ...

  5. MySql由于编码问题,存储过程执行出错。

    在存储过程后面加了一段话.红色部分 DELIMITER $$ USE `mysql_wispeed01-test1`$$ DROP PROCEDURE IF EXISTS `sp_crebillno` ...

  6. linux的软件安装方式总结

    Linux系统中软件的“四”种安装原理详解:源码包安装.RPM二进制安装.YUM在线安装.脚本安装包   一.Linux软件包分类 1.1 源码包 优点: 开源,如果有足够的能力,可以修改源代码: 可 ...

  7. Python(Django)遇到的问题及解决方法

    问题一 因为已经有程序占用了Django的默认端口了,所以只要这么启动项目,81是使用的端口,然后访问即可http://127.0.0.1:81/ 解决: 问题二 TypeError: not eno ...

  8. input框中修改placeholder的样式

    有时间input标签的placeholder属性会出现问题,下面是修改placeholder的样式demo input::-webkit-input-placeholder{ color:red; f ...

  9. ProgressBar三种style

    一.普通的ProgressBar显示如图 <ProgressBar        android:id="@+id/pbNormal"        android:layo ...

  10. Oracle约束、索引

    Oracle中的约束有五种,分别为: 非空:not null 主键:primary key 外键:foreign key 唯一:unique 检查:check 在数据字典视图 user_constra ...