作业来源,李刚老师的《疯狂Java讲义》第五版,第五章课后题。
之所以最终选择看这本书,是因为自己学习走了太多弯路。
第一次入Java,是看了HFJ这本书,是,语言很幽默,很简单。 但是,太啰嗦……啃了几章后发现进展缓慢。
于是,转而投入视频学习,看视频发现很多知识又是一带而过,而且有的时候看着看着就分神。
然后找到了H2J,内容简略不少,借助之前的知识啃到实战……开始要收费……
无奈,参考了很多人的意见,最后入手了一本疯狂。目前为止,看的很舒服。
记录在这里,让自己有个回忆。
题目书P166,1、2题。自己的答案如下:
public class Student
{
private String name;
private int age;
private String gender;
private String phone;
private String address;
private String email;
// 默认构造器
public Student() {};
// 带有成员变量的构造器
public Student(String name, int age, String gender,
String phone, String address, String email)
{
this.name = name;
this.age = age;
this.gender = gender;
this.phone = phone;
this.address = address;
this.email = email;
}
// name setter
public void setName(String name)
{
if (name.length() > 6 || name.length() < 2)
{
System.out.println("你输入的姓名不符合要求!");
return;
}
else
{
this.name = name;
}
}
// name getter
public String getName()
{
return this.name;
}
// age setter
public void setAge(int age)
{
if (age > 120 || age < 0)
{
System.out.println("你输入的年龄有误!");
return;
}
else
{
this.age = age;
}
}
// age getter
public int getAge()
{
return this.age;
}
// gender setter
public void setGender(String gender)
{
if (gender != "male" || gender != "female")
{
System.out.println("你输入的性别不符合要求!");
return;
}
else
{
this.gender = gender;
}
}
// gender getter
public String getGender()
{
return this.gender;
}
// phone setter
public void setPhone(String phone)
{
this.phone = phone;
}
// phone getter
public String getPhone()
{
return this.phone;
}
// address setter
public void setAddress(String address)
{
this.address = address;
}
// address getter
public String getAddress()
{
return this.address;
}
// email setter
public void setEmail(String email)
{
this.email = email;
}
// email getter
public String getEmail()
{
return this.email;
}
public void eat()
{
System.out.println("学生正在吃饭");
}
public void drink()
{
System.out.println("学生正在喝水");
}
public void play()
{
System.out.println("学生正在娱乐");
}
public void sleep()
{
System.out.println("学生正在睡觉");
}
public void study()
{
System.out.println("学生正在学习");
}
// 定义一个通过名字查找对象的方法
// 这里注意传参!!是类型+变量名! 比如 类Student 变量名s才对,不是class Student这样!!!
public void findVarName(Student[] students,Student s)
{
for (int i = 0; i <= students.length; i++)
{
if (students[i].name == s.name)
{
System.out.println("找到啦!" + s.name + "在通讯录中!");
return; // 这里记得用return,而不是break 直接结束
}
}
System.out.println("不好意思,没有找到……");
}
// 照猫画虎,定义一个按照邮箱查找用户的方法
public void findVarEmail(Student[] students, Student s)
{
for (int i = 0; i < students.length; i++)
{
if (students[i].email == s.email)
{
System.out.println("找到啦!" + s.name + "在通讯录中!");
return;
}
}
System.out.println("不好意思,没有找到……");
}
public static void main(String[] args)
{
Student[] students = new Student[5];
var zhao = new Student();
var qian = new Student();
var sun = new Student();
var li = new Student();
var zhou = new Student();
var wu = new Student();
// 设置了set get方法不用?就离谱!而且现在不能这样赋值,因为private
// zhao.name = "zhao";
// zhao.email = "zhao@123.com";
// zhao.address = "1大街1号";
// qian.name = "qian";
// qian.email = "qian@123.com";
// qian.address = "2大街2号";
// sun.name = "sun";
// sun.email = "sun@123.com";
// sun.address = "3大街3号";
// li.name = "li";
// li.email = "li@123.com";
// li.address = "4大街4号";
// zhou.name = "zhou";
// zhou.email = "zhou@123.com";
// zhou.address = "5大街5号";
zhao.setName("zhao");
zhao.setEmail("zhao@123.com");
zhao.setAddress("1大街1号");
qian.setName("qian");
qian.setEmail("qian@123.com");
qian.setAddress("2大街2号");
sun.setName("sun");
sun.setEmail("sun@123.com");
sun.setAddress("3大街3号");
li.setName("li");
li.setEmail("li@123.com");
li.setAddress("4大街4号");
zhou.setName("zhou");
zhou.setEmail("zhou@123.com");
zhou.setAddress("5大街5号");
wu.setName("wu");
wu.setEmail("wu@123.com");
wu.setAddress("6大街6号");
students[0] = zhao;
students[1] = qian;
students[2] = sun;
students[3] = li;
students[4] = wu; // 如果数组存在null, 使用定义的方法对比 会发生null与Student类相比,产生空指针
// 通过定义的方法查找
zhao.findVarName(students, zhao);
sun.findVarEmail(students, sun);
zhou.findVarEmail(students, wu);
}
}
心得:
1. 注意自己定义的方法,方法的形参如果传入引用型变量该如何书写。应当是类型 变量。
2.注意循环体中break和return的区别。