ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

【Day6】类与对象—翁恺老师慕课—Java—面向对象程序设计

2022-01-23 12:04:00  阅读:200  来源: 互联网

标签:慕课 Java Day6 int fenmu Fraction print new fenzi


一、用类制造对象

对象是实体,需要被创建,可以为我们做事情

类是规范,根据类的定义来创建对象

对象=属性+服务

封装:把数据和对数据的操作放在一起

二、定义类

创建对象:new VendingMachine;或    VendingMachine vm = new VendingMachine;

对象变量是对象的管理者

让对象做事:“.”运算符

三、成员变量和成员函数

类定义了对象中所有的变量,成为成员变量

每个对象都有自己的变量,和同一个类的其他对象是分开的

函数是通过对象调用的

this是成员函数的一个特殊的固有的本地变量,它表达了这一次调用这个函数的那个对象

调用函数:通过“."运算符调用某个对象的函数,也可在成员函数内部直接调用自己(this)的其他函数

成员变量的生存期是对象的生存期,作用域是类内部的成员函数

四、对象初始化

成员变量会自动初始化,也可以赋值

构造函数:如果一个成员变量的名字和类的名字完全相同,则在创建这个类的每一个对象时都会自动调用这个函数,这个函数不能有返回类型

函数重载:一个类可以有多个构造函数,只要他们的参数表不同。创造对象的时候给出不同的参数值,就会自动调用不同的构造函数。通过this()还可以调用其他构造函数。一个类里的同名但参数表不同的函数构成了重载关系

五、分数实例

题目内容:

设计一个表示分数的类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

package lianxi;

import java.util.Scanner;

public class fenshu {

    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 fenzi;
    int fenmu;
    Fraction(int a,int b){
        this.fenzi = a;
        this.fenmu = b;
    }
    double toDouble() {
        return (double)fenzi/fenmu;
    }
    Fraction plus(Fraction r) {
        Fraction temp = new Fraction(0,0);
        temp.fenzi = fenzi*r.fenmu+fenmu*r.fenzi;
        temp.fenmu = fenmu*r.fenmu;
        return temp;
    }
    Fraction multiply(Fraction r) {
        Fraction temp = new Fraction(0,0);
        temp.fenzi = fenzi*r.fenzi;
        temp.fenmu = fenmu*r.fenmu;
        return temp;
    }
    void print() {
        int n;
        int m=0;
        if(fenzi==fenmu) {
            System.out.println(1);
        }
        else {
            
            if(fenzi>fenmu) {
                n=fenmu;
            }
            else {
                n=fenzi;
            }
            for(int i=1;i<=n;i++) {
                if(fenzi%i==0&&fenmu%i==0) {
                    m=i;
                }
            }
            fenzi=fenzi/m;
            fenmu=fenmu/m;
            System.out.println(fenzi+"/"+fenmu);
        }
    }
}

 

标签:慕课,Java,Day6,int,fenmu,Fraction,print,new,fenzi
来源: https://www.cnblogs.com/dongma-hesha/p/15835902.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有