Java学习之第八章练习题-1

news2024/11/25 7:14:54

目录

第一题

题目

 我的代码

Person类

 错误

正确写法

输出结果

 附加要求

代码

结果

第二题

题目

答案

第三题 

题目

代码

 总结不足

创建对象并运行

 第四题

题目

 运行结果​编辑

第五题

题目

第六题

题目


第一题

题目

 我的代码

Person类

package com.hspedu.homework;

public class Person {
//    1.定义一个Person类{name,age,job],初始化Person 对象数组,
//        有3个person对象,并 按照 age 从 大到 小进行排序, 提示,
//        使用冒泡排序 Homework01.java
    private String name;
    private int age;
    private String job;

    public Person(String name, int age, String job) {
        this.name = name;
        this.age = age;
        this.job = job;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    
}


 错误

题目含义理解错误,误以为是将三个对象的age从小到大排出来,然后输出

报错:Variable expected

分析:person[i].getAge()是一个常量

错误原因:没有理解题意:题目的意思是按照age的大小给三个对象的输出顺序排序

正确写法

因为最后输出的是对象的属性,所以最后需要用到toString方法

package com.hspedu.homework.homework01;

public class HomeWork01 {
    public static void main(String[] args) {
        //初始化Person 对象数组,有3个person对象,
        //并 按照 age 从 大到 小进行排序,
        //提示:使用冒泡排序 Homework01.java
        Person[] person = new Person[3];
        person[0] = new Person("曹操", 53, "魏王");
        person[1] = new Person("周瑜", 30, "大都督");
        person[2] = new Person("诸葛亮", 38, "军师");
        System.out.println("======冒泡排序前的顺序======");
        for (int i = 0; i < person.length; i++) {
            System.out.println(person[i]);
        }
        //冒泡排序,双层循环,
        // 一共3个元素,外层循环两次
        //第一次外层循环时,内循环两次
        //第二次外层循环时,内循环一次
        Person temp = null;
        for (int i = 0; i < person.length - 1; i++) {
            for (int j = 0; j < person.length - 1 -i; j++) {
                if(person[j].getAge() < person[j+1].getAge()){
                    temp = person[j];
                    person[j] = person[j+1];
                    person[j+1] = temp;
                }
            }
        }
        //冒牌排序结束后重新输出
        System.out.println("======冒泡排序后的顺序======");
        for (int i = 0; i < person.length; i++) {
            System.out.println(person[i]);
        }
    }
}

输出结果

 

 附加要求

按照名字长度排序

需要用到person[j].getName().length()

代码

//名字长度从小到大
        for (int i = 0; i < person.length - 1; i++) {
            for (int j = 0; j < person.length - 1 -i; j++) {
                if(person[j].getName().length() > person[j+1].getName().length()){
                    temp = person[j];
                    person[j] = person[j+1];
                    person[j+1] = temp;
                }
            }
        }
        //冒牌排序结束后重新输出
        System.out.println("======名字长度冒泡排序后的顺序======");
        for (int i = 0; i < person.length; i++) {
            System.out.println(person[i]);
        }

结果

第二题

题目

 

答案

第三题 

题目

代码

package com.hspedu.homework;

public class Teacher {
    //3.编写老师类
    //(1)要求有属性“姓名name”"年龄age""职称post”基本工资salary
    // 2编写业务方法,introduce () ,实现输出一个教师的信息。
    // 工资级别分别为:教授为1.3、副教授为1.2、讲师类1.1。
    private String name;
    private int age;
    private String post;
    private double salary;
    private double grade;
    public void introduce(){
        System.out.println("姓名:" + name + "\t年龄:" + age + "\t职称:" +
        post + "\t基本工资:" + salary + "\t工资级别:" + grade);
    }

    public Teacher(String name, int age, String post, double salary, double grade) {
        this.name = name;
        this.age = age;
        this.post = post;
        this.salary = salary;
        this.grade = grade;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getPost() {
        return post;
    }

    public void setPost(String post) {
        this.post = post;
    }

    public double getSalary() {
        return salary;
    }

    public void setSalary(double salary) {
        this.salary = salary;
    }

    public double getGrade() {
        return grade;
    }

    public void setGrade(double grade) {
        this.grade = grade;
    }
}
package com.hspedu.homework;



public class Professor extends Teacher{
    // (3)编写教师类的三个子类: 教授类(Professor )、副教授类、讲师类。


    public Professor(String name, int age, String post, double salary, double grade) {
        super(name, age, post, salary, grade);
    }


    @Override
    public void introduce() {
        System.out.println("教授级别的信息:");
        super.introduce();
    }
}
package com.hspedu.homework;

public class AssProfessor extends Teacher{
    public AssProfessor(String name, int age, String post, double salary, double grade) {
        super(name, age, post, salary, grade);
    }

    @Override
    public void introduce() {
        System.out.println("副教授级别的信息:");
        super.introduce();
    }
}

package com.hspedu.homework;

public class Lecturer extends Teacher{
    public Lecturer(String name, int age, String post, double salary, double grade) {
        super(name, age, post, salary, grade);
    }

    @Override
    public void introduce() {
        System.out.println("讲师级别的信息:");
        super.introduce();
    }
}

 三个子类都没有自己特有的成员方法

 总结不足

1.没有定义工资级别:grade这个属性,直接在创建新对象的时候给了数值

2.题目要求打印,一开始做的时候返回的字符串,在调用方法时需要输出语句

创建对象并运行

package com.hspedu.homework.homework03;


public class HomeWork03 {
    public static void main(String[] args) {
        // 工资级别分别为:教授为1.3、副教授为1.2、讲师类1.1。
        // 在三个子类里面都重写父类的introduce () 方法
        // (4)定义并初始化一个老师对象,
        // 调用业务方法,实现对象基本信息的后台打印.
        Teacher[] teacher = new Teacher[3];
        teacher[0] = new Professor("Alan", 50,"正高",30000,1.3);
        teacher[1] = new AssProfessor("Bobby", 50,"副高",13450,1.2);
        teacher[2] = new Lecturer("Carl", 35,"中级",7500,1.1);
        for (int i = 0; i < teacher.length; i++) {
            //动态绑定机制,会根据运行类型来调用方法
            teacher[i].introduce();
        }

    }
}

 第四题

题目

 对编程思想的培养:题目给的是1000,理解成奖金,在子类中定义一个变量bonus

package com.hspedu.homework;

public class Employee {
    private String name;
    private double daysal;
    private double daysnum;
    private double grade;

    public void printsal(){
        System.out.println(name + "的年工资是" + daysal *daysnum * grade);
    }


    public Employee(String name, double daysal, double daysnum, double grade) {
        this.name = name;
        this.daysal = daysal;
        this.daysnum = daysnum;
        this.grade = grade;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public double getDaysal() {
        return daysal;
    }

    public void setDaysal(double daysal) {
        this.daysal = daysal;
    }

    public double getDaysnum() {
        return daysnum;
    }

    public void setDaysnum(double daysnum) {
        this.daysnum = daysnum;
    }

    public double getGrade() {
        return grade;
    }

    public void setGrade(double grade) {
        this.grade = grade;
    }
}

package com.hspedu.homework.homework05;



public class Manager extends Employee {
    private double bonus;//题目中给的1000是变量,不是固定的

    public Manager(String name, double daysal, double daysnum, double grade) {
        super(name, daysal, daysnum, grade);
    }

    public double getBonus() {
        return bonus;
    }

    public void setBonus(double bonus) {
        //bonus是灵活变化的,所以在完成对象属性初始化的时候不包括bonus
        this.bonus = bonus;
    }

    @Override
    public void printsal() {
        System.out.println("经理" + getName() + "的年工资是" + (getDaysal()
                * getDaysnum()* getGrade() + bonus));
    }
}

通过set方法给bonus赋值,可以根据实际情况灵活给数据 

package com.hspedu.homework;

public class Worker extends Employee{
    public Worker(String name, double daysal, double daysnum, double grade) {
        super(name, daysal, daysnum, grade);

    }

    @Override
    public void printsal() {
        System.out.print("普通员工");
        super.printsal();
    }

}
package com.hspedu.homework.homework05;

public class HomeWork04 {
    public static void main(String[] args) {
        Worker worker = new Worker("smith", 200, 300, 1.0);
        Manager manager = new Manager("barney", 400, 280, 1.2);
        manager.setBonus(1000);
        worker.printsal();
        manager.printsal();
    }
}

为了方便阅读,把每道练习题都新建一个包,所以包的位置会不太一样 

printsal方法的另一种写法
      public double showsal(){
          return daysal *daysnum * grade;
      }

 这种写法在子类中可以直接重写,加上bonus就可以了,但是问题在于,这样写就没有办法加上职业和名字了,只能在调用方法的时候再输出职业和名字

 

 

 运行结果

第五题

题目

package com.hspedu.homework.homework05;

public class Employee {
    //设计父类一员工类。
    private String name;
    private String job;
    private double sal;
    private int salMonth = 12;//13薪、15薪

    public Employee(String name, String job, double sal) {
        this.name = name;
        this.job = job;
        this.sal = sal;
    }

    public void printyear(){
        System.out.println(job + name + "的年工资=" + (sal * salMonth));
    }


    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getJob() {
        return job;
    }

    public void setJob(String job) {
        this.job = job;
    }

    public double getSal() {
        return sal;
    }

    public void setSal(double sal) {
        this.sal = sal;
    }

    public int getSalMonth() {
        return salMonth;
    }

    public void setSalMonth(int salMonth) {
        this.salMonth = salMonth;
    }
}

考虑实际情况,工作中有12薪的、13薪、14薪的,将工作月份也作为一个属性来定义 

package com.hspedu.homework.homework05;

public class Worker extends Employee{
    public Worker(String name, String job, double sal) {
        super(name, job, sal);
    }

    @Override
    public void printyear() {
        super.printyear();
    }
}
package com.hspedu.homework.homework05;

public class Peasant extends Employee{

    public Peasant(String name, String job, double sal) {
        super(name, job, sal);
    }

    @Override
    public void printyear() {
        super.printyear();
    }
}

 

package com.hspedu.homework.homework05;

public class Waiter extends Employee{
    public Waiter(String name, String job, double sal) {
        super(name, job, sal);
    }

    @Override
    public void printyear() {
        super.printyear();
    }
}
package com.hspedu.homework.homework05;

public class Teacher extends Employee{
    private double classSal;
    private double classDay;

    public Teacher(String name, String job, double sal) {
        super(name, job, sal);
    }

    @Override
    public void printyear() {
        System.out.println(getJob() + getName() + "的年工资=" +
                (getSal() * getSalMonth() + getClassSal() * getClassDay()));
    }

    public double getClassSal() {
        return classSal;
    }

    public void setClassSal(double classSal) {
        this.classSal = classSal;
    }

    public double getClassDay() {
        return classDay;
    }

    public void setClassDay(double classDay) {
        this.classDay = classDay;
    }
}

 

package com.hspedu.homework.homework05;

public class Scientist extends Employee{
    private double bonus;//动态的给奖金

    public Scientist(String name, String job, double sal) {
        super(name, job, sal);
    }

    @Override
    public void printyear() {
        System.out.println(getJob() + getName() + "的年工资=" +
                (getSal() * getSalMonth() + bonus ));
    }



    public double getBonus() {
        return bonus;
    }

    public void setBonus(double bonus) {
        this.bonus = bonus;
    }
}

第六题

题目

package com.hspedu.homework.homework06;

class Grand {
    String name="AA";
    private int age=100;
    public void g1(){};
}
package com.hspedu.homework.homework06;

class Father extends Grand{
    String id="001";
    private double score;
    public void f1(){
        //super可以访问哪些成员(属性和方法) ?
        // 1、super.name; 2、 super.g1()
        // this可以访问哪些成员?
        //1、this.id; 2、this.score 3、this.f1(); 4、this.name; 5、this.g1()
    }

}
package com.hspedu.homework.homework06;

class Son extends Father{
    String name="BB";
    public void g1(){}
    private void show(){
    //super可以访问哪些成员(属性和方法)?
    //this可以访问哪些成员?

        //super可以访问父类的属性和方法,同时还有放温暖修饰符的限制
        //可以访问Father的属性id,但是不能访问属性score,因为是private修饰的
        //也可以访问Father的f1();
        //Grand类的name、g1();

        //综上所述:super可以访问的有
        // 1、super.id;2、super.f1(); 3、super.name; 4、super.g1()


        //this从本类开始查找访问,可以访问name,g1(),和show(),虽然是private,但是在一个类中
        //Father类的id和f1()
        //grand类的name,g1(),子类可以调用,就不会再调用父类的


        //综上所述:this可以访问的有
        //1、this.name; 2、this.g1(); 3、this.show(); 4、this.id; 5、this.f1()

    }


}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

DBCO-NHS 1353016-71-3,二苯基环辛炔-活性酯 可用于以高特异性和反应性标记叠氮化物修饰的生物分子

名称 DBCO-NHS ester 中文名称 二苯基环辛炔-活性酯 英文名称 DBCO-NHS NHS-DBCO 分子量 402.40 CAS 1353016-71-3 溶剂 溶于DMSO, DMF, DCM, THF, Chloroform 存储条件 -20冷冻保存 保存时间 一年 结构式 DBCO&#xff08;二苯并环辛炔&#xff09;是一种环炔烃&…

怎么将视频转为音频mp3格式?这些转换方法一分钟就能学会

随着现在娱乐方式的多样化&#xff0c;我们可以在闲暇时间做一些令人放松的事情。对于我来说&#xff0c;就很喜欢一边听歌一边发呆。我之前喜欢的一位歌手&#xff0c;他的翻唱歌曲以及原创音乐都得到了网友很高的评价&#xff0c;但是有些歌曲在平台上没有音源&#xff0c;我…

【内网安全-CS】Cobalt Strike启动运行上线方法

目录 一、启动运行 1、第一步&#xff1a;进入cs目录 2、第二步&#xff1a;查看本机ip 3、第三步&#xff1a;启动"团队服务器" 4、第四步&#xff1a;客户端连接 二、上线方法 1、第一步&#xff1a;生成监听器 2、第二步&#xff1a;生成木马 3、第三步&…

如何将智能设备关联至云开发中的项目?

将应用中已经连接的设备关联至云项目后&#xff0c;就可以在 涂鸦 IoT 开发平台 通过云开发主动管理和控制对应的设备。云开发提供多种应用中的设备关联方式&#xff1a; 关联自有 App 账号关联自有小程序关联涂鸦 App 账号关联 SaaS 方式一&#xff1a;关联自有 App 大家可以…

深度学习入门(六十)循环神经网络——门控循环单元GRU

深度学习入门&#xff08;六十&#xff09;循环神经网络——门控循环单元GRU前言循环神经网络——门控循环单元GRU课件关注一个序列门候选隐状态隐状态总结教材1 门控隐状态1.1 重置门和更新门1.2 候选隐状态1.4 隐状态2 从零开始实现2.1 初始化模型参数2.2 定义模型2.3 训练与…

前端本地存储数据库 IndexedDB 存储文件

介绍 IndexedDB 是一种底层 API&#xff0c;用于在客户端存储大量的结构化数据。目前各浏览器都已支持&#xff0c;兼容性很好。 特点 IndexedDB 是一个基于 JavaScript 的面向对象数据库&#xff0c;IndexedDB 允许您存储和检索用键索引的对象&#xff1b;可以存储结构化克隆…

MySQL8.0基础篇

文章目录一、MySQL概述1、数据库概述1.1 数据库作用1.2 数据库的相关概念2、MySQL概述2.1 概述2.2 RDBMS与非RDBMS3、MySQL环境安装3.1 MySQL的下载、安装、配置(win)3.2 MySQL登录3.3 MySQL演示使用3.4 MySQL目录结构与源码二、SQL查询1、SQL详情1.1 SQL分类1.2 SQL语言的规则…

Docker和docker-compose中部署nginx-rtmp实现流媒体服务与oob和ffmpeg推流测试

场景 Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流&#xff1a; Windows上搭建Nginx RTMP服务器并使用FFmpeg实现本地视频推流_霸道流氓气质的博客-CSDN博客_nginx-rtmp-win64 上面讲的是在windows中搭建nginx-rtmp&#xff0c;如果实在centos中使用docker或…

使用Git拉取和推送到仓库

使用Git拉取和推送到仓库 0、前置工作 首先安装和配置git &#xff0c;参考&#xff1a; git安装教程_嘴巴嘟嘟的博客-CSDN博客_全局安装gitGit上传文件代码到GitHub&#xff08;超详细&#xff09;_蓝布棉的博客-CSDN博客_git上传文件到github仓库 没有仓库的情况 创建仓…

项目总结篇

注意会话管理&#xff1a;cookie,session的作用&#xff1b;(Redis等) 过滤敏感词&#xff08;相关算法&#xff09;&#xff0c;事务&#xff08;Spring怎么管理&#xff09; Redis的数据结构适合那种情况 kafka&#xff1a;框架背后通用的原则&#xff0c;模式&#xff0c;生…

jsp+ssm计算机毕业设计房屋租赁管理系统【附源码】

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; JSPSSM mybatis Maven等等组成&#xff0c;B/S模式 Mave…

大数据 集群测试部分

查看HDFS集群状态 在浏览器里访问http://master:9870 不能通过主机名master加端口9870的方式&#xff0c;原因在于没有在hosts文件里IP与主机名的映射&#xff0c;现在只能通过IP地址加端口号的方式访问&#xff1a;http://192.168.1.101:9870 修改宿主机的C:\Windows\System…

2023年大学毕业生,我有话想对你说

虽然每年都说大学毕业生有多少多少&#xff0c;就业难&#xff0c;但貌似以往的经济寒冬&#xff0c;互联网寒冬都不如2022年2023年这么寒冷。 可以说&#xff0c;2022年一整年都是在裁员的声音中度过的&#xff0c;有的公司逐渐取消年终奖&#xff0c;原本熙熙攘攘的办公室&am…

看看欧洲国际学校的IB分数排名

大家好&#xff0c;今天为大家整理了欧洲的国际学校IB分数排名&#xff0c;信息搬运自IB分数网站。如果有偏差还请好心人出来指正。 可以看到&#xff0c;整个榜单瑞士的国际学校数量最多。确实&#xff0c;其实大部分国家的一线国际学校都是集齐在首都城市。 而瑞士的国际学校…

BFS算法-leetcode java题解

BFS算法-leetcode java题解 本文目录BFS算法-leetcode java题解BFS算法思想leetcode 111. 二叉树的最小深度leetcode 1091. 二进制矩阵中的最短路径leetcode 752. 打开转盘锁leetcode 127. 单词接龙leetcode 433. 最小基因变化leetcode 1162. 地图分析leetcode 695. 岛屿的最大…

记一次Spring4shell漏洞分析

漏洞条件 1.Tomcat war包部署 Tomcat 9.60<&#xff08;Tomcat9.61已打补丁&#xff09; 1.Web应用以war包部署到Tomcat中时使用到ParallelWebappClassLoader 2.而以jar包部署的classLoader嵌套参数被解析为org.springframework.boot.loader.LaunchedURLClassLoader&#…

OFDM系统同步技术的matlab仿真,包括符号定时同步,采样钟同步,频偏估计

目录 1.算法描述 2.仿真效果预览 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 在单载波系统中&#xff0c;载波频率的偏移只会对接收信号造成一定的幅度衰减和相位旋转&#xff0c;这可以通过均衡等方法来加以克服。而对于多载波系统来说&#xff0c;载波频率的偏移会导致子…

拖动布局的两种方式

一种是弹窗的拖动布局&#xff0c;一种是非弹窗。 代码如下&#xff1a; 非弹窗&#xff1a;这里加载了一个本地的视频 import android.content.Context; import android.content.SharedPreferences; import android.os.Bundle; import android.view.MotionEvent; import an…

Go1.19.3 map原理简析

map简析 map是一个集数组与链表(美貌与智慧)特性于一身的数据结构&#xff0c;其增删改查时间复杂度都非常优秀&#xff0c;在很多场景下用其替代树结构。关于map的特性请自行学习。 Go语言在语言层面就支持了map&#xff0c;而非其他语言(如Java)通过外置类库的方式实现。 使…

【LSSVM回归预测】基于matlab天鹰算法优化最小二乘支持向量机AO-LSSVM数据回归预测【含Matlab源码 1848期】

⛄一、天鹰算法优化最小二乘支持向量机LSSVM简介 1 最小二乘支持向量机 最小二乘支持向量机是支持向量机的一种改进算法[9,10],它将SVM算法中的不等式约束转化为等式约束,采用最小二乘线性系统作为损失函数代替支持向量机所采用的二次规划方法,以下介绍了该方法的基本原理。 …