文章目录

  • 前言
    • 第三章第3节
    • 第三章-第4节
    • 第三章-第5节
  • 总结

前言


第三章第3节

  1. 编写 Car 类,属性有品牌(brand)和颜色(color),show 方法打印
    所有属性。
    代码如下:

public class One {public static void main(String[] args) {Car car = new Car();car.brand = "一汽大众";car.color = "红色";car.show();}}class Car{public String brand;//品牌public String color;//颜色void show() {System.out.println(brand+" 品牌的汽车"+" ,颜色为:"+color);}
}

运行结果:

2. 定义一个游戏类,包括游戏的属性包括:游戏名、类型、大小、星级、
介绍等,可以调用方法输出游戏的介绍。


public class Two {public static void main(String[] args) {//实例化对象Game game = new Game();//显示System.out.println(game.show());}}class Game{private String gameName;private String type;private int size;private int starts;private String present;{  //普通代码块System.out.println("开始啦");}static {    //静态代码块System.out.println("正式介绍");}//构造方法Game() { //构造方法代码块//this初始化操作this("王者荣耀","竞技类",2,7,"王者荣耀是一个团队竞技类的游戏,大约需要占用有2G内存,属于7星级别的游戏");System.out.println('\n');}//构造重载Game(String gameName,String type,int size,int starts,String present){this.gameName = gameName;this.type = type;this.size = size;this.starts = starts;this.present = present;}//定义普通类的方法String show() {return (gameName+"是一个"+type+",它有"+size+"G这么大,它属于"+starts+"星级别的游戏,这个游戏的详细情况:"+present);}//属性封装void setGameName(String gameName) {this.gameName = gameName;}String getGameName(String gameName) {return gameName;}void setType(String type) {this.type = type;}String getType(String type) {return type;}void setSize(int size) {this.size = size;}int getSize(int size) {return size;}void setStarts(int starts) {this.starts = starts;}int getStarts(int starts) {return starts;}void setPresent() {this.present = present;}String getPresent() {return present;}}

执行结果:

3. 定义并测试一个代表员工的 Employee 类。它的属性包括“员工姓名”、
“员工号码”、“员工基本薪水”、“员工薪水增长率”;他的方法包括“构
造方法”、“获取员工姓名”、“获取员工号码”、“获取员工基本薪水”、
“计算薪水增长额”及“计算增长后的工资总额”。

代码如下:


public class Three {public static void main(String[] args) {Employee emp = new Employee();emp.memberNumber = "001";emp.memberName = "李四";emp.memberSalary = 2000;   //基本工资emp.time = 8;emp.inctell();emp.total();}}
//定义Employee类
class Employee{String memberNumber;String memberName;float memberSalary;float time; //工作年限// increase = time*200;//薪水增长额public void inctell() {System.out.println("增长额="+"工作年限*"+200);System.out.println("增长额为:"+time*200);}//增长后的工作总额public void total() {System.out.println("基本工资:"+memberSalary);System.out.println("工资总数=基本工资+增长额");System.out.println(memberSalary+time*200);}}

执行结果:

第三章-第4节

  1. 编写一个类 Book,代表图书。
    具有属性: 名称(title)、页数(pageNum),其中页数不能少于 200
    页,否则输出错误信息,并赋予默认值 200。
    具有方法: 为各属性设置赋值和取值方法。 detail,用来在控制台输出每
    本图书的名称和页数
    编写测试类 BookTest 进行测试:为 Book 对象的属性赋予初始值,并调 用 Book 对象的 detail 方法,看看输出是否正确

代码如下:

package homework10201002;public class BookTest {public static void main(String[] args) {Book book = new Book();book.setTitle("Pillow");book.setPageNum(300);book.detail();}}
class Book{private String title;private int pageNum;//各属性设置赋值和取值方法public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public int getPageNum() {return pageNum;}//在这里添加特加条件public void setPageNum(int pageNum) {if(pageNum < 200) {System.out.println("信息错误,默认值200");this.pageNum = 200;}else {this.pageNum = pageNum;}}//控制台输出名称和页数public void detail() {System.out.println("书名: "+title+",页数: "+pageNum);}
}

执行结果:
Pillow,300

Pillow,150

2. 通过类描述开课吧的 Java 学员。
具有属性: 姓名,年龄,性别,爱好,公司(都是:开课吧),学科(都
是:Java 学科)。
思考:请结合 static 修饰属性进行更好的类设计。

package homework10201002;
/*** 考查: 修饰符权限 和 static属性的使用* @author jiajun.lin**/
public class Kakeba {public static void main(String[] args) {Employee.company = "开课吧";Employee.subject = "Java 学科";Employee emp = new Employee("张三",35,"男","打篮球");emp.detail();}}class Employee{private String memberName;private int age;private String sex;private String interest;static String company;static String subject;//public Employee(String memberName, int age, String sex, String interest) {this.memberName = memberName;this.age = age;this.sex = sex;this.interest = interest;}//属性封装public String getMemberName() {return memberName;}public void setMemberName(String memberName) {this.memberName = memberName;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getSex() {return sex;}public void setSex(String sex) {this.sex = sex;}public String getInterest() {return interest;}public void setInterest(String interest) {this.interest = interest;}public static String getCompany() {return company;}public static void setCompany(String company) {Employee.company = company;}public static String getSubject() {return subject;}public static void setSubject(String subject) {Employee.subject = subject;}//控制台输出public void detail() {System.out.println("姓名: "+memberName+",年龄: "+age+",性别: "+sex+",公司: "+company+",学科: "+subject);}}

执行结果:

3. 通过类描述衣服, 每个衣服对象创建时需要自动生成一个序号值。
要求:每个衣服的序号是不同的, 且是依次递增 1 的。
代码如下:

package homework10201002;
/** 考查: static静态属性,开辟新的地址空间获取新的static*/
public class clothes {public static void main(String[] args) {Cloth c1 = new Cloth();Cloth c2 = new Cloth();Cloth c3 = new Cloth();c1.detail();c2.detail();c3.detail();}}class Cloth{//静态属性private static int num = 1;private int number;//这种对static属性的改动,是开辟了新的地址空间来实现的,且只有类自身才能改动该空间地址public Cloth() {this.number = Cloth.num;Cloth.num++;}//属性封装public int getNumber() {return number;}public void setNumber(int number) {this.number = number;}public void detail() {System.out.println("序号为: "+number);}
}

执行结果:

第三章-第5节

  1. 试题:假设用户账号为:admin,密码为 123,编写用户登陆案例。 要
    求:请将登陆定义为 login 方法, 并将 login 方法写在 UserService 类中

代码如下:
UserServer.java

package com.ljj.homework;
/*** 考查:*       1. 对类属性的封装*         2. equals的使用* @author jiajun.lin**/
public class UserService {private String userName;private String password;//对私有属性进行封装public String getUserName() {return userName;}public void setUserName(String userName) {this.userName = userName;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}//对login方法的书写public boolean login (String userName,String password) {if (userName.equals(this.userName)) {if(password.equals(this.password)) {System.out.println("登陆成功!");return true;}else {System.out.println("登陆失败!密码错误.");}}else {System.out.println("登陆失败!用户名错误.");}return false;}}

UserServerTest.java

package com.ljj.homework;import java.util.Scanner;public class UserServiceTest {public static void main(String[] args) {UserService user1 = new UserService();//类的实体,有内存地址了String userName;String password;Scanner input = new Scanner(System.in);user1.setUserName("admin");user1.setPassword("123");for (int i=0;i<3;i++) {System.out.println("你还有: "+(3-i)+"次机会");System.out.println("输入用户名: ");userName = input.next();System.out.println("输入密码: ");password = input.next();if (user1.login(userName,password)) {break;}System.out.println("------------");System.out.println("请联系后台工作人员");}}}

执行结果:

  1. 试题:设置一个类, 命名为 MyList
    类中包含属性:Object[] element
    方法有如下几个:
  2. 增加方法 add : 可以向数组属性中依次存储 Object,数组内容
    存满时,需实现动态扩容(详解在下面)。
  3. 删除方法 remove :可以根据数据或下标,从数组属性中删除
    Object 数据,删除后,数组后续元素需前移。
  4. 查询方法 get :方法传入下标,返回数组中指定下标的数据。
    当前存储数据量 size : 获取当前存储的有效数据长度
    动态扩容详解:无需真正增加原数组的容量,只用将原内容复制到新
    的大数组,然后让原数组名称重新等于大数组即可。由于原数组数据在堆中,
    失去引用会被 GC 自动回收。

题目分析:这道题比较综合,是对前面知识的综合应用.
考查:
1.数据结构
2.parseInt,equals,Scanner
3.while,if,for
4.switch
5.pattern正则表达式
6.数组
其中部分内容有上网参考

代码如下:
MyList.java

package com.ljj.homework;public class MyList {public Object[] element = new Object[10];private int index = -1; //记录最后一个有效数据的位置/** 增加方法 add : 可以向数组属性中一次存储Object, 数组内容*                 存满时, 需实现动态扩容(详解在下面)*/public void add(Object x) {//容量不足, 数组中最后一个位置已经被占用if (index >= element.length-1) {//需要进行扩容,且每次扩容10个,偏移量为10 Object[] newElement = new Object[element.length + 10];//每次扩容后,需要将前面的数据填到另外一个数组中for (int i=0;i<element.length;i++) {newElement[i] = element[i];}//在填入了数据后, 就需要将超出的数据再次填入新扩容的数组中newElement[++index] = x;//再将新的数组内存地址给到原来的数组,这样实现对原来数组内存地址的更改element = newElement;}else {//如果容量充足, 就需要继续将数据填入数组中element[++index] = x;}System.out.println("更新后数组元素为: ");this.display();}/** 删除方法 remove : 可以根据数据或下标, 从数组属性中删除*                     Object数据, 删除后, 数组后续元素需前移. * 考查: 对栈的操作*///flagpublic void remove(boolean flag,Object x) {boolean findFlag = false;  //记录数据是否被查找到//如果数据没有被查找到, 如果该数据非空,我们就需要根据index去查找if (flag) {for (int i=0;i<=this.index;i++) {//找到后, 就需要将该数据移除;       办法: 将数组往前面移动if (findFlag == true) {element[i-1] = element[i];}//按数值查找if (x.equals(element[i])) {findFlag = true;}}//通过下标访问的数据未被查找到if (findFlag == false) {System.out.println("没有找到["+x+"]");}else {this.index--;System.out.println("更新后数组元素: ");this.display();}}else {   //按下标删除元素(此时传入x的为下标, 即int类型 )int pos = Integer.parseInt(String.valueOf(x));if (pos<0 || pos>this.index) {System.out.println("数组访问越界");}else {for (int i=pos+1;i<=this.index;i++) {element[i-1] = element[i];}this.index--;System.out.println("更新后数组元素为: ");this.display();}}}/** 查询方法 get : 方法传入下标, 返回数组中指定下标的数据.*/public Object get(int index) {if (index<=-1) {System.out.println("数组中暂无数据");return null;}if (index>this.index) {System.out.println("访问越界");return null;}return element[index];}public int size() {return index + 1;}/** 显示数组元素*/public void display() {for (int i=0;i<=this.index;i++) {System.out.println(element[i]+" ");}System.out.println();}
}

MyListTest.java

package com.ljj.homework;import java.util.Scanner;
import java.util.regex.Pattern;public class MyListTest {public static void main(String[] args) {Scanner input = new Scanner(System.in);MyList myList = new MyList();String temp;while(true) {System.out.println("选择功能序号: ");System.out.println("1. 增加方法");System.out.println("2. 删除方法");System.out.println("3. 查询方法");System.out.println("4. 查询有效元素数目 ");System.out.println("5. 退出  ");temp = input.next();if(!temp.equals("1") && !temp.equals("2") && !temp.equals("3") && !temp.equals("4") && !temp.equals("5")) {System.out.println("请输入正确的功能序号1-4");continue;}int funcNum = Integer.parseInt(temp); //将功能码转换为数字switch (funcNum) {case 1:System.out.println("需要添加的元素: ");temp = input.next();myList.add(temp);break;case 2:System.out.println("删除方式为(1:按数值删除, 0:按下标删除):");temp = input.next();while (true) {if (!temp.equals("0") && !temp.equals("1")) {System.out.println("请输入正确的删除方式:0|1");}else {break;}}boolean removeFlag = (temp.equals("1"))?true:false;if (removeFlag == true) {System.out.println("请输入需要删除的元素值: ");temp = input.next();myList.remove(removeFlag,temp);}break;case 3:System.out.println("请输入需要查找的元素下标: ");temp = input.next();//正则表达式判断是否为数字Pattern pattern = Pattern.compile("^[-\\+]?[\\d]*$");if (pattern.matcher(temp).matches()) {if (myList.get(Integer.parseInt(temp)) != null){String value = myList.get(Integer.parseInt(temp)).toString();System.out.println("下标"+Integer.parseInt(temp)+"对应的元素为: "+value);}else {System.out.println("输入有误, 必须为整数");}}break;case 4:System.out.println("当前数组大小为: "+myList.size());break;case 5:System.out.println("欢迎下次光临! ");return;     //退出系统default:}System.out.println("--------------------");//区分    }}}

执行结果:

总结

提示:这里对文章进行总结:
在写JAVA程序时,有按照以下步骤:

  1. 对问题分析
  2. 对类的属性和方法进行结构化设计
  3. 对类中方法进行功能设计
  4. 注意菜单的设计要符合用户的思维

JAVA大数据习题Week2相关推荐

  1. 零基础学Java大数据难不难

    java大数据如今在企业中用到的次数是非常多的,很多人都比较看好java技术,那么零基础学Java大数据难不难?想要学习java技术说难不难,说简单也不是很简单,来看看下面的详细介绍就知道了. 零基础 ...

  2. 2019年美团,滴滴,蘑菇街Java大数据面经分享!

    作者:不清不慎!目前从事Java大数据开发相关的工作,对大数据spark等分布式计算领域有着浓厚的兴趣,欢迎一起交流,一起进步.本文为作者投稿,有兴趣投稿的同学,请在后台回复投稿! 大概在三月份开始面 ...

  3. python大数据和java大数据的区别-未来Java、大数据、Python哪个前景更好,薪资更高?...

    都知道现在最火爆的是人工智能.大数据.而人工智能和大数据主要用的语言就是Java和Python.今天我们就来分析一下,当前java,python和大数据,哪个就业前景更好?自己该学哪一个? Java和 ...

  4. 原来Java大数据才是真正的高富帅!

    大数据时代,中国IT环境也将面临重新洗牌,不仅仅是企业,更是程序员们转型可遇而不可求的机遇. 国内大多数大型互联网公司的程序员被称作研发工程师,但实际上国内几乎没有研发项目,只能叫做开发.开发程序员的 ...

  5. Java大数据你该学哪个

    1.关于Java Java就是一门编程语言.实现同一个需求有上百种编程语言可以完成,Java之于大数据就是一种工具罢了. 2.关于大数据 大数据就是一个行业,实现同一个需求同样有多种工具可以选择,狭义 ...

  6. java大数据开发做什么你知道吗?大数据的职业发展规划

    ​​​​​​ 你想过自己的未来规划吗? java大数据程序员只需要学到技术就行吗? 1.如何成为大数据工程师 Java开发是IT行业的经典岗位,行业当中存在普遍的需求,Web开发.Android开发. ...

  7. JAVA大数据需要学什么

    大数据时代,Java开发的需求量越来越大 大数据已经成为了企业竞争的核心力量.而Java是企业大数据技术的主要支撑语言,Hadoop本身就是用Java编写的.当你需要在运行MapReduce的服务器集 ...

  8. Java和Java大数据有什么区别?

    单单提起java或者大数据,很多人对此都一目了然,但对于Java大数据这样一个新鲜名词,多少有些疑惑.那java和java大数据学习的内容是一样的吗?两者有什么区别呢?今天就从java和java大数据 ...

  9. 为什么Java大数据是最火爆的编程语言?

    未来10年将是大数据,人工智能爆发的时代,到时将会有大量的企业需要借助大数据,而Java最大的优势就是它在大数据领域的地位,目前很多的大数据架构都是通过Java来完成的. 在这个Android.iOS ...

最新文章

  1. 成功当选2014年度MVP
  2. crontab wget命令定时执行thinkphp的控制器实现定时任务
  3. 转:实例学习PHP程序对用户身份认证实现两种方法
  4. 如何在数据源是空的时候,gridview显示表头(万能)
  5. latex textbf没有用_把知乎改造成LaTex创作平台
  6. 理解Spring MVC Model Attribute 和 Session Attribute
  7. 【机器学习系列】隐马尔科夫模型第三讲:EM算法求解HMM参数
  8. html文件调整表格边框的属性,css怎么设置表格边框?
  9. 兄弟7895dw粉盒清零_兄弟brother打印机清零大全
  10. 神推荐:西瓜导航你值得拥有
  11. SQL基础教程(第2版)读书笔记
  12. Ubuntu 20.04.3 “have unmet dependencies“
  13. 如何查看电脑支持的最大内存是多少
  14. 数据仓库、数据湖、湖仓一体概念
  15. non-resource variables are not supported in the long term 无法解决
  16. 东半球最好的TV桌面开源项目
  17. 我们该如何运营Facebook账号呢?
  18. harmonyos 2.0体验,Harmonyos 2.0
  19. 打造F11一键恢复系统
  20. 成本与体验的“非零和博弈”

热门文章

  1. 使用openssh的登录的三种方法
  2. 通过shell脚本提交网站404死链
  3. cmd命令之参数 c
  4. 圆弧周长公式_钢板和钢管的理论重量计算公式居然不一样?
  5. selenium 无法启动IE浏览器的解决方法
  6. php Access-Control-Allow-Origin 解决跨域问题
  7. bash:pip:找不到命令
  8. navicat连接批量删除_多连接数据库管理工具:Navicat Premium for Mac
  9. win11系统通知怎么取消 Windows11取消系统通知的步骤方法
  10. javamail 解码 base64 html格式邮件_Spring整合javaMail