Java期末复习题之封装

点击返回标题->23年Java期末复习-CSDN博客


第1题.

定义一个类Person,定义name和age私有属性,定义有参的构造方法对name和age进行初始化。在测试类中创建该类的2个对象,姓名、年龄分别为lili、19和lucy、20,在屏幕打印出2个对象的姓名和年龄。

 

public class Main {
    public static void main(String[] args) {
        Person p1 = new Person("lily",19);
        Person p2 = new Person("lucy",20);
        System.out.println(p1.toString());
        System.out.println(p2.toString());
    }
}
class Person{
    private String name;
    private int age;
    //有参构造给对象赋值
    Person(String name,int age){
        this.name = name;
        this.age = age;
    }
    //toString返回由name和age组成的预定字符串
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

第2题.

首先定义一个计算长方形面积的类rectangleClass,要求类中有一个定义长方形左上角和右下角座标的构造函数,以及一个通过长方形右下角座标与左上角座标计算长方形面积,并实例化两个长方形进行测试.

 

public class Main {
    public static void main(String[] args) {
        rectangleClass rec1 = new rectangleClass(-5, 3, -3, 1);
        rectangleClass rec2 = new rectangleClass(2, -3, 4, -6);
        System.out.println("rec1" + rec1.getPoint() + "其面积为:" + rec1.getArea());
        System.out.println("rec2" + rec2.getPoint() + "其面积为:" + rec2.getArea());
    }
}
class rectangleClass {
    int x1, y1, x2, y2;
    //有参构造,定义长方形左上角和右下角座标
    rectangleClass(int x1, int y1, int x2, int y2) {
        this.x1 = x1;
        this.x2 = x2;
        this.y1 = y1;
        this.y2 = y2;
    }
    //返回计算的面积
    double getArea() {
        return Math.abs(x1 - x2) * Math.abs(y1 - y2);
    }
    //获取当前长方形左上角点和右下角点的坐标
    String getPoint() {
        return "左上角坐标为:(" + this.x1 + "," + this.y1 + ")," + "右下角角坐标为:(" + this.x2 + "," + this.y2 + "),";
    }
}

第3题.

设计一个表示图书的Book类,它包含图书的书名、作者、月销售量等私有属性,另有两个构造方法(一个不带参数,另一个带参数),成员方法setBook( ) 和printBook()分别用于设置和输出书名、作者、月销售量等数据。并设计相应的测试Book类的应用程序主类,测试并显示输出提供所有功能的结果。

 

public class Main {
    public static void main(String[] args) {
    	//b1采取有参构造实例化对象并赋值的形式
        Book b1 = new Book("三体", "刘慈欣", 114514);
        b1.printBook();
        //b2采取无参构造实例化对象,调用setBook()成员方法赋值的形式
        Book b2 = new Book();
        b2.setBook("龙族", "江南", 10086);
        b2.printBook();
    }
}
class Book {
    private String name, author;
    private int sale_volume;
    //无参构造
    Book() {
        System.out.println("无参构造被调用");
    }
    //有参构造
    Book(String name, String author, int sale_volume) {
        System.out.println("有参构造被调用");
        this.name = name;
        this.author = author;
        this.sale_volume = sale_volume;
    }
    //设置书本信息
    void setBook(String name, String author, int sale_volume) {
        this.name = name;
        this.author = author;
        this.sale_volume = sale_volume;
    }
    //打印书本信息
    void printBook() {
        System.out.printf("书名:%s    作者:%s   月销售量:%d\n", this.name, this.author, this.sale_volume);
    }
}

第4题.

请创建一个银行帐户类,要求如下:(1)类包括帐户名、帐户号、存款额等私有属性;(3)有三个参数的构造方法(2)可实现余额查询,存款和取款的操作。(3)创建该类的对象,验证以上两项。

 

import java.util.Scanner;
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        Bank b1 = new Bank("张三", "123456", 100);
        int input;
        do {//循环弹出菜单并请求选择
            menu();
            input = sc.nextInt();
            switch (input) {
                case 1:
                    b1.getBalance();
                    break;
                case 2:
                    b1.save_money();
                    break;
                case 3:
                    if(b1.getBalance()==0){
                        System.out.println("你的账户余额为0,无分文可取!");
                        break;
                    }
                    b1.withdraw_money();
                    break;
                case 0:
                    System.out.println("已退出,欢迎再次使用!");
                    break;
                default:
                    System.out.println("该选项尚未开发……");
                    break;
            }
        } while (input != 0);
    }

    public static void menu() {//打印菜单
        System.out.println("************************");
        System.out.println("****** 1.查询余额 ********");
        System.out.println("****** 2.存款    ********");
        System.out.println("****** 3.取款    ********");
        System.out.println("****** 0.退出账户 ********");
    }

    static class Bank {
        private String account_name, account_number;
        private int balance;

        public Bank(String account_name, String account_number, int balance) {
            this.account_name = account_name;
            this.account_number = account_number;
            this.balance = balance;
        }

        int getBalance() {//余额查询
            System.out.printf("用户名:%s,当前余额:%d\n", this.account_name, this.balance);
            return this.balance;
        }

        void save_money() {//存钱
            int save;
            Scanner sc = new Scanner(System.in);
            while (true) {
                System.out.println("你要存多少钱?请输入->");
                save = sc.nextInt();
                if (save <= 0) {
                    System.out.println("请输入合理的存款数!");
                    continue;
                }
                break;
            }
            this.balance += save;
            System.out.printf("完成存款,本次存款共计%d元,当前余额%d\n", save, this.balance);
        }

        void withdraw_money() {//取钱
            int withdraw;
            Scanner sc = new Scanner(System.in);
            while (true) {
                System.out.println("你要取多少钱?请输入->");
                withdraw = sc.nextInt();
                if (withdraw <= 0) {
                    System.out.println("请输入合理的取款数!");
                    continue;
                } else if (withdraw > this.balance) {
                    System.out.println("你没用这么多钱可供取款!");
                    continue;
                }
                break;
            }
            this.balance -= withdraw;
            System.out.printf("完成取款,本次取款共计%d元,当前余额%d\n", withdraw, this.balance);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/225509.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Lidar】基于Python的三维点云数据转二维平面+散点图绘制

最近一直在搞点云相关的操作&#xff0c;有时候在处理点云数据时需要查看处理后的数据是否满足需求&#xff0c;所以就想着写一套展示点云的代码。之前已经分享过如何可视化点云了&#xff0c;感兴趣的可以自己去看下&#xff1a;【Lidar】基于Python的Open3D库可视化点云数据。…

微信商城小程序怎么弄

随着移动互联网的快速发展&#xff0c;微信小程序已经成为了许多商家和企业拓展业务的新渠道。其中&#xff0c;微信商城小程序更是受到了广大用户的喜爱。那么微信商城小程序怎么弄呢&#xff1f;下面给大家做个详细讲解。 首先&#xff0c;你需要在微信公众平台注册一个小程…

孩子都能学会的FPGA:第二十三课——用FPGA实现格雷码的编码和解码

&#xff08;原创声明&#xff1a;该文是作者的原创&#xff0c;面向对象是FPGA入门者&#xff0c;后续会有进阶的高级教程。宗旨是让每个想做FPGA的人轻松入门&#xff0c;作者不光让大家知其然&#xff0c;还要让大家知其所以然&#xff01;每个工程作者都搭建了全自动化的仿…

文心一言大模型应用开发入门

本文重点介绍百度智能云平台、文心一言、千帆大模型平台的基本使用与接入流程及其详细步骤。 注册文心一言 请登录文心一言官方网站 https://yiyan.baidu.com/welcome 点击登录&#xff1b;图示如下&#xff1a; 请注册文心一言账号并点击登录&#xff0c;图示如下&#xff1…

深入理解数据在内存中是如何存储的,位移操作符如何使用(能看懂文字就能明白系列)文章超长,慢慢品尝

系列文章目录 C语言笔记专栏 能看懂文字就能明白系列 &#x1f31f; 个人主页&#xff1a;古德猫宁- &#x1f308; 信念如阳光&#xff0c;照亮前行的每一步 文章目录 系列文章目录&#x1f308; *信念如阳光&#xff0c;照亮前行的每一步* 前言引子一、2进制和进制转化为什么…

ORACLE数据库实验总集 实验四 Oracle数据库物理存储结构管理

一、实验目的 &#xff08;1&#xff09;掌握 Oracle数据库数据文件的管理 &#xff08;2&#xff09;掌握 Oracle数据库控制文件的管理 &#xff08;3&#xff09;掌握 Oracle数据库重做日志文件的管理 &#xff08;4&#xff09;掌握 Oracle数据库归档管理&#xff0c; 二、…

Golang 原生Rpc Server实现

Golang 原生Rpc Server实现 引言源码解析服务端数据结构服务注册请求处理 客户端数据结构建立连接请求调用 延伸异步调用定制服务名采用TPC协议建立连接自定义编码格式自定义服务器 参考 引言 本文我们来看看golang原生rpc库的实现 , 首先来看一下golang rpc库的demo案例: 服…

忘记PDF密码了,怎么办?

PDF文件有两种密码&#xff0c;一个打开密码、一个限制编辑密码&#xff0c;因为PDF文件设置了密码&#xff0c;那么打开、编辑PDF文件就会受到限制。忘记了PDF密码该如何解密&#xff1f; PDF和office一样&#xff0c;可以对文件进行加密&#xff0c;但是没有提供恢复密码的功…

动态代理IP和静态代理IP有什么区别,适用场景是什么?

互联网行业的从业者经常会用到一种工具&#xff0c;那就是代理IP工具。动态代理IP和静态代理IP是两种常见的代理IP技术&#xff0c;它们在网络通信中起到了重要的作用&#xff0c;比如大数据行业的从业者会经常需要用到动态代理IP&#xff0c;跨境行业的从业者会经常用到静态代…

MySQL 忘记root密码后重置密码操作

在忘记 MySQL 密码的情况下&#xff0c;可以通过 --skip-grant-tables 关闭服务器的认证&#xff0c;然后重置 root 的密码&#xff0c;具体操作步骤如下。 步骤 1)&#xff1a;关闭正在运行的 MySQL 服务。打开 cmd 进入 MySQL 的 bin 目录。 步骤 2)&#xff1a;输入mysqld -…

Constraining Async Clock Domain Crossing

Constraining Async Clock Domain Crossing 我们在normal STA中只会去check 同步clock之间的timing,但是design中往往会存在很多CDC paths,这些paths需要被正确约束才能保证design function正确,那么怎么去约束这些CDC paths呢? 以下面的design为例,如下图所示 这里clk…

基于Linux的网络防火墙设计方法

摘要 随着Internet的迅速发展&#xff0c;网络越来越成为了人们日常生活不可或缺的一部分&#xff0c;而随之引出的网络安全问题也越来越突出&#xff0c;成为人们不得不关注的问题。 为了在一个不安全的网际环境中构造出一个相对安全的环境&#xff0c;保证子网环境下的计算机…

lorenz相图

观察Lorenz在各个不同维度上的相图。 lorenz_demo(50) function xdot g(t,x) xdot zeros(3,1); sig 10.0; rho 28.0; bet 8.0/3.0; xdot(1) sig*(x(2)-x(1)); xdot(2) rho*x(1)-x(2)-x(1)*x(3); xdot(3) x(1)*x(2)-bet*x(3); endfunction lorenz_demo(time) [t,x] ode…

系统思考与啤酒游戏经营沙盘

结束一家汽车零配件公司《系统思考与啤酒游戏经营沙盘》的内训课&#xff0c;4个小组基本上都有共同的心智模式&#xff0c;这也代表团队有一些集体的盲点。不仅仅对啤酒游戏经营沙盘做了复盘&#xff0c;同时也借用学员画出的系统环路图完成真实案例的研讨以及团队共识&#x…

JVM 运行时内存篇

面试题&#xff1a; 讲一下为什么JVM要分为堆、方法区等&#xff1f;原理是什么&#xff1f;&#xff08;UC、智联&#xff09; JVM的分区了解吗&#xff0c;内存溢出发生在哪个位置 &#xff08;亚信、BOSS&#xff09; 简述各个版本内存区域的变化&#xff1…

<习题集><LeetCode><链表><2/19/21/23/24>

目录 2. 两数相加 19. 删除链表的倒数第 N 个结点 21. 合并两个有序链表 23. 合并 K 个升序链表 24. 两两交换链表中的节点 2. 两数相加 https://leetcode.cn/problems/add-two-numbers/ public ListNode addTwoNumbers(ListNode l1, ListNode l2) {//head是cur链表头节点…

Jenkins中文官网地址

Jenkins中文官网地址&#xff1a; Jenkins 用户手册Jenkins 是一个开源自动化服务器https://www.jenkins.io/zh/doc/

RCS(限制立方样条图)ggrcs包

致敬天桥下的卖艺者&#xff0c;零基础说科研&#xff0c;写的ggrcs包新的2.6版本已经在CRAN上线&#xff0c;增加了多元线性回归分析模块&#xff0c;现在支持逻辑回归&#xff08;logistic回归&#xff09;、cox回归和多元线性回归 需要的可以使用代码安装 install.packages(…

MATLAB将动画演示以及将过程保存为gif动态图片

平时想要做一个动画图片来演示&#xff0c;本人一般有两种方法&#xff1a; 一种是截很多张图之后&#xff0c;将这些图片合成为一张gif动画&#xff1b; 另一种就是录屏再制作成gif&#xff0c;我一般是录下视频之后&#xff0c;使用QQ影音&#xff0c;里面的影音工具箱有一个…

轻松掌握接口测试!丰富你的测试技能!

接口测试是测试系统组件间接口的一种测试。接口测试主要用于检测外部系统与系统之间以及内部各个子系统之间的交互点。测试的重点是要检查数据的交换&#xff0c;传递和控制管理过程&#xff0c;以及系统间的相互逻辑依赖关系等。 简答的说就是通过URL像服务器或者其他模块等&…