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

欢迎批评指正!

题目链接: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。

你写的类要和以下的代码放在一起,并请勿修改这个代码:

  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.  
  5. public static void main(String[] args) {
  6. Scanner in = new Scanner(System.in);
  7. Fraction a = new Fraction(in.nextInt(), in.nextInt());
  8. Fraction b = new Fraction(in.nextInt(), in.nextInt());
  9. a.print();
  10. b.print();
  11. a.plus(b).print();
  12. a.multiply(b).plus(new Fraction(,)).print();
  13. a.print();
  14. b.print();
  15. in.close();
  16. }
  17.  
  18. }

注意,你的类的定义应该这样开始:

class Fraction {

也就是说,在你的类的class前面不要有public。

输入格式:

程序运行时会得到四个数字,分别构成两个分数,依次是分子和分母。

输出格式:

输出一些算式。这些输入和输出都是由Main类的代码完成的,你的代码不要做输入和输出。

输入样例:

2 4 1 3

输出样例:

1/2

1/3

5/6

1

1/2

1/3

我的代码:

  1. import java.util.Scanner;
  2.  
  3. public class Main {
  4.  
  5. public static void main(String[] args) {
  6. Scanner in = new Scanner(System.in);
  7. Fraction a = new Fraction(in.nextInt(), in.nextInt());
  8. Fraction b = new Fraction(in.nextInt(), in.nextInt());
  9. a.print();
  10. b.print();
  11. a.plus(b).print();
  12. a.multiply(b).plus(new Fraction(,)).print();
  13. a.print();
  14. b.print();
  15. in.close();
  16. }
  17.  
  18. }
  19.  
  20. class Fraction{
  21. int x, y;//x是分子,y是分母
  22.  
  23. Fraction(int a, int b){
  24. this.x = a;
  25. this.y = b;
  26. }
  27.  
  28. double toDouble(){
  29. return (double)x/y;
  30. }
  31.  
  32. Fraction plus(Fraction r) {
  33. Fraction p = new Fraction(, );
  34. p.x = x * r.y + y * r.x;
  35. p.y = y * r.y;
  36. return p;
  37. }
  38.  
  39. Fraction multiply(Fraction r) {
  40. Fraction p = new Fraction(, );
  41. p.x = x * r.x;
  42. p.y = y * r.y;
  43. return p;
  44. }
  45. void print() {
  46. int p = x, q = y, mod;
  47. if(p > q) {
  48. mod = p % q;
  49. }
  50. else {
  51. mod = q % p;
  52. }
  53. while(mod != ) {
  54. if(p < q) {
  55. q = mod;
  56. mod = p % q;
  57. }
  58. else {
  59. p = mod;
  60. mod = q % p;
  61. }
  62. }
  63.  
  64. if(p > q) {
  65. mod = q;
  66. }
  67. else {
  68. mod = p;
  69. }
  70. x /= mod;
  71. y /= mod;
  72. if(y == ) {
  73. System.out.println(x);
  74. }
  75. else {
  76. System.out.println(x + "/" + y);
  77. }
  78. }
  79. }

有任何问题请站内联系或邮箱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. Node js redis

    const redis = require('redis');//redis , '172.16.4.2'); //redis操作 client.set("hello", &quo ...

  2. resource links

    http://cenalulu.github.io/linux/all-about-cpu-cache/

  3. windows jdk安装

    先去官网下载安装包 x86 32位 x64 64位 下载地址 安装jdk 安装目录默认c盘 配置系统环境 JAVA_HOME环境变量.作用:它指向jdk的安装目录,Eclipse/NetBeans/T ...

  4. SFTP服务的使用!!

    在Client端安装Xshell或者SecureCRT等具有SFTP文件传输功能的软件,在服务器端安装好SFTP服务并启动,就可以用SFTP传输文件了! from:   http://www.cnbl ...

  5. pdfjs预览pdf文件的两种方式(可复制)

    1.以图片形式进行展示: version:采用1.x版本,2.0版本会有字体显示不完整的问题:参考 这里使用1.8.170 <script th:src="@{/pdfjs/build ...

  6. 大白话讲解Promise

    去年6月份, ES2015正式发布(也就是ES6,ES6是它的乳名),其中Promise被列为正式规范.作为ES6中最重要的特性之一,我们有必要掌握并理解透彻.本文将由浅到深,讲解Promise的基本 ...

  7. WinForm 中 comboBox控件之数据绑定

    一.IList 现在我们直接创建一个List集合,然后绑定 1 IList<string> list = new List<string>(); 2 list.Add(&quo ...

  8. vimtutor——vim官方教程

    =============================================================================== =      欢     迎     阅 ...

  9. 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 ...

  10. IEnumerabl 和 IEnumertator

    public interface IEnumerable   {       IEnumerator GetEnumerator();   }   IEnumerator 接口 public inte ...