冷酷小叶的Java学习笔记Day11
#Day11#
一.对象数组
1.类比int类型数组:
int[] ary = new int[3];//[0,0,0]
2.Person类型的数组
Person p1 = new Person();
Person p2 = new Person();
Person p3 = new Person();
…
Person[] persons = new Person[10];//null
注意:对象类型定义的默认值都是null
3.代码实例
3.1 定义一个Person类
public class Person {
String name;
public void drink() {
System.out.println(this.name+“正在喝”);
}
}
3.2 定义一个测试类
public class PersonTest {
public static void main(String[] args) {
//来5个人
int[] ary = new int[5];
//定义对象数组
Person[] persons = new Person[5];
//通过Arrays.toString打印对象数组
System.out.println(“persons对象数组的默认值:”+Arrays.toString(persons));//—>[null, null, null, null, null]
//通过增强for循环打印对象数组
for(Person p:persons) {
System.out.println§;
}
//通过一般的for循环遍历打印数组,并且给数组里面的每个元素赋值
for(int i=0;i<=persons.length-1;i++) {
persons[i] = new Person();//此处很重要,每一个数组的成员都需要new一个Person()
persons[i].name = “李大锤”+i;
System.out.println(persons[i]);
}
注意:
直接打印persons[i]会默认调用数组类型Person的toString方法
如果Person类里不重写toString方法,他会去使用他老爹Object类里的toString();
因此需要在Person类中重写父类Object类的toString方法
//重写父类的方法—返回姓名
@Override
public String toString() {
return this.name;
}
二.小案例—珍爱网
1.需求
a.珍爱网面对的所有用户,不管男嘉宾还是女嘉宾,都是人.自我介绍
b.程序进入界面:1-注册;2-登录;3-查询;4-匹配;5-退出
2.定义一个User用户类
public class User {
//姓名
public String name;
//性别
public char gender;
//是否登录状态
public boolean flag = false;//false表示未登录
//自我介绍
public void show() {
System.out.println(“大家好,我的名字叫”+this.name+",性 别"+this.gender+",很高兴认识大家!");
}
//重写Object类中的toString方法—用于直接打印users[i]
public String toString() {
return name+"-"+gender+"-"+false;
}
}
3.定义一个ZhenaiNetSystem类,用于实现功能,即测试类
3.1 先开始控制台,用于后面的获取键盘上的内容
Scanner sc = new Scanner(System.in);
3.2 定义珍爱网后台数据库
User[] users = init();//封装init()方法用于初始化,生成第一个user用户
注意:封装的方法一定要是static,static的方法只能访问static方法,且此时users数组中只有一个初始化对象成员
-----------------------------------------------------------------------------
private static User[] init() {
User[] us = new User[1];
us[0] = new User();//没有这一步,不能使用一个为null的对象去访问属性
us[0].name = “admin”;
us[0].gender = ‘男’;
return us;
}
------------------------------------------------------------------------------------
3.3 设计功能的总体模块
while(true) {
welcome();—封装的欢迎语
---------------------------------------------------------------------------------
private static void welcome() {
System.out.println("");
System.out.println(“清纯不常在,抓紧谈恋爱,欢迎来到珍爱网—寻找你的那个她!”);
System.out.println(“请输入功能数字:”);
System.out.println(“1-注册;2-登录;3-查询;4-匹配;5-退出”);
System.out.println("");
}
-----------------------------------------------------------------------------
//1.得到用户输入的数字
int code = sc.nextInt();
//2.根据输入的数字,跳转对应的功能–switch-case选择功能
switch(code) {
case 1:
//注册功能
users = regist(sc,users);—封装注册方法—返回的是数组类型的值
-----------------------------------------------------------------------------
private static User[] regist(Scanner sc,User[] users) {
System.out.println("-------------------注册功能-------------------");
//用户输入
System.out.println(“请输入您的名称:”);
String name = sc.next();
System.out.println(“请输入您的性别:”);
char gender = sc.next().charAt(0);//“男”—>‘男’
//构建一个对象
User u = new User();
u.name = name;
u.gender = gender;
//将对象放入数组?
//1.扩容数组+1:扩容以后得到的是一个新的数组
users = Arrays.copyOf(users, users.length+1);
//2.将对象放在最后一个位置
users[users.length-1] = u;
return users;
}
-----------------------------------------------------------------------------
System.out.println(Arrays.toString(users));
break;
case 2:
//登录功能
login(sc,users);—封装登录方法,无需返回值
-----------------------------------------------------------------------------
private static void login(Scanner sc,User[] users) {
System.out.println("-------------------登录功能-------------------");
User u = findByName(sc,users);—通过findByName方法获取输入的对象名
if(unull) {
System.out.println(“登录失败,请重新登录”);
}else {
//有可能当前用户已经登录了,直接提示已经登录
//如果没有登录,提示登录成功
if(u.flag) {
System.out.println(“您的账号已经登录”);
}else {
System.out.println(“恭喜您登录成功”);
//修改登录状态
u.flag = true;
}
}
}
-----------------------------------------------------------------------------
break;
case 3:
//查询功能
User u = findByName(sc,users);–封装findByName方法
-----------------------------------------------------------------------------
private static User findByName(Scanner sc,User[] users) {
System.out.println(“请输入您的用户名:”);
String name = sc.next();
//用输入的用户名和系统后台的所有数据进行比较
for(User u:users) {
if(u.name.equals(name)) {
return u;
}
}
return null;
}
-----------------------------------------------------------------------------
System.out.println(“您查询的用户信息为:”+u);
break;
case 4:
//匹配功能
match(sc,users);—封装
-----------------------------------------------------------------------------
private static void match(Scanner sc,User[] users) {
System.out.println("-------------------匹配功能-------------------");
System.out.println(“欢迎来到霆哥算命-珍爱大揭秘环节”);
System.out.println(“男方:”);
//判断男用户是否存在
User u1 = findByName(sc,users);
System.out.println(“女方:”);
//判断女用户是否存在
User u2 = findByName(sc,users);
if(u1null || u2==null) {
System.out.println(“存在未登录的用户”);
}else {
ZhenaiMapping(u1,u2);//封装真爱测试的方法
}
}
-----------------------------------------------------------------------------
封装的ZhenaiMapping方法
-----------------------------------------------------------------------------
private static void ZhenaiMapping(User u1,User u2) {
//获得字符串的指定位置字符: “字符串”.charAt(0…)
char ch1 = u1.name.charAt(0);//猛男姓名的第一个字符
char ch2 = u1.name.charAt(1);//猛男姓名的第二个字符
char ch3 = u2.name.charAt(0);//女神姓名的第一个字符
char ch4 = u2.name.charAt(1);//女神姓名的第二个字符
//判定
if(ch1-ch2>520) {
System.out.println(“一定是特别的缘分”);
//上面满足,可以继续测试,if中嵌套使用
if(ch3-ch4>1314) {
System.out.println(“你们是天作之合”);
}else {
System.out.println(“你们有缘无分,如果想构建缘分,请关注公众号霆哥算命”);
}
}else {
System.out.println(“你们注定不会在一起”);
System.out.println(“预知有缘人的姓名,请关注霆哥算命”);
}
}
-----------------------------------------------------------------------------
break;
case 5:
//退出功能
return;
default:
System.out.println(“输入不合法”);
break;
}
}
冷酷小叶的Java学习笔记Day11相关推荐
- 冷酷小叶的Java学习笔记Day6
#Day# 一.数组的随机赋值 Random 1.int类型的数组 1.1 定义随机数 Random r = new Random(); 1.2 定义数组 int[] ary = new ary[5] ...
- 冷酷小叶的Java学习笔记Day3
#Day3# 一.switch-case 1.结构 switch(整数或者字符串) { case 整数1或者字符串1: 执行代码; break; case 整数2或者字符串2: 执行代码; break ...
- 21天学通Java学习笔记-Day11(常用类)
java 常用类(重点): String 类: String 类代表字符串.创建以后不能更变. public class tests { public static void main(String[ ...
- java学习笔记11--Annotation
java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...
- java学习笔记13--反射机制与动态代理
本文地址:http://www.cnblogs.com/archimedes/p/java-study-note13.html,转载请注明源地址. Java的反射机制 在Java运行时环境中,对于任意 ...
- 准备写java学习笔记
准备写java学习笔记 java int 转载于:https://blog.51cto.com/cryingcloud/1975267
- Java学习笔记--StringTokenizer的使用
2019独角兽企业重金招聘Python工程师标准>>> Java Tips: 使用Pattern.split替代String.split String.split方法很常用,用于切割 ...
- java学习笔记12--异常处理
java学习笔记系列: java学习笔记11--集合总结 java学习笔记10--泛型总结 java学习笔记9--内部类总结 java学习笔记8--接口总结 java学习笔记7--抽象类与抽象方法 j ...
- Java学习笔记(十)--控制台输入输出
输入输出 一.控制台输入 在程序运行中要获取用户的输入数据来控制程序,我们要使用到 java.util 包中的 Scanner 类.当然 Java 中还可以使用其他的输入方式,但这里主要讲解 Scan ...
最新文章
- 在Matlab中可视化3D体积图像数据,例如MRI图像
- Deep learning:十一(PCA和whitening在二维数据中的练习)
- java onkeydown_java笔记 js onkeypress与onkeydown 事件区别详细说明
- C#调用VC的DLL的接口函数参数类型转换一览表
- 浅谈计算机教学论文,毕业论文--浅谈计算机教学的有效性
- 大幅提高Android开发效率之TemplateBuilder
- IronPython for ASP.NET 部署注意事项
- html 选择题代码,JS实现简单的选择题测评系统代码思路详解(demo)
- QT编写BarChart直方图
- Matplotlib系列(三):坐标轴变换及注释
- java驱动音响设备发音_XP环境下驱动正常、声卡正常但音响没声音怎么解决?
- ITSM基础框架开发维护指南
- js实现表格按行滚动
- 社交返利APP正在被返利机器人,普通返利APP集体围攻绞杀
- 常见通信协议整理归纳
- 可在线使用的调色板颜料工具
- 2016晔子小跟班行走城市第一站深圳仙湖植物园游记
- gitbook 插件 SEO
- idea启动报错:Failed to create JVM. JVM Path: D:\Program Files\JetBrains\IntelliJ IDEA 2021.3.3\jbr\
- DELPHI 三层显示error loading midas.dll
热门文章
- PingTunnel建立ICMP隧道
- MTK6765编译环境搭建
- C语言求“水仙花”数(详细)
- LayoutSizeConstraint设置实现根据控件多少自适应窗口大小
- chrome调试工具的使用
- 批量挖掘SRC思路与实践二
- 海量数据将亮相“全栈式中间件信息技术应用创新峰会”
- torchvision.transforms.ToTensor的用法
- mybatis XML文件中特殊符号“大于”、“小于”、“大于等于”、“小于等于”,XML报错
- python3讯飞语音识别