Javabean package test_4; public class Student {private int id; private String name; private int age; public Student() { } public Student(int id, String name, int age) { this.id = id; this.name = name; this.age = age; } public int getId() {r
Javabean
package test_4;
public class Student { private int id;
private String name;
private int age;
public Student() {
}
public Student(int id, String name, int age) {
this.id = id;this.name = name;
this.age = age;
}
public int getId() { return id; }
public void setId(int id) { this.id = id; }
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; }
Javatest (main)
package test_4;
public class studentTest {
public static void main(String[] args) {//创建一个数组,用来存储学生对象。
Student[] arr = new Student[3];
//创建学生对象并且把对象添加到数组当中。
Student stu1 = new Student(1,"zhangsan",23);
Student stu2 = new Student(2,"lisi",24);
Student stu3 = new Student(3,"wangwu",25);
arr[0] = stu1;
arr[1] = stu2;
arr[2] = stu3;
//要求1. 再添加一个学生,并判断是否是唯一性的。
//分析: 先把题拆解了。
//先想办法添加一个学生。
Student stu4 = new Student(4,"zhaoliu",26);
//把stu4 添加到数组里面,有两种情况,1.数组已满 (这种情况只能再创建一个新数组 长度等于旧数组+1). 2.数组未满。
//需要注意:唯一性的判断 : 要是已经存在就不用添加了,不存在才添加,所以要先判断。所以 先创建一个方法来判断 是否
boolean flag = contains(arr,stu4.getId());
if(flag) {
System.out.println("当前id重复,请修改后再添加");
}else {
int count = getCount(arr);
if(count == arr.length) {
//已经满了
//1.创建一个新数组 大小等于老数组+1
//2.把老数组的内容复制过来。
Student[] newArr = creatNewArr(arr);
newArr[count] = stu4;
printArr(newArr);
}else {
arr[count] = stu4;//注意:getCount 返回的值 =2 有两种意思,1.表示数组里面有2个元素,
// 2.表示下一次添加数组就是添加到2索引的位置
printArr(arr);
}
}
}
//创建方法是
// 1.我要干什么?唯一性判断 // 2.要完成这个事情 我需要怎么做 要数组和id // 3.要不要返回值 要返回值。 public static boolean contains(Student[] arr,int id) { for(int i = 0 ; i<arr.length ; i++) {
//依次获得数组里面的学生信息Student stu = arr[i];
if(stu != null) {
//比较的是id 所以需要获得id
int sid = stu.getId();
//比较
if(sid == id) {
return true; //注意因为是和每一个数组的id进行比较 所以应该循坏完之后再返回false。
}
return false;
}
}
}
public static int getCount(Student[] arr) {
int count = 0 ;
for(int i = 0 ;i<arr.length ; i++) {
if(arr[i] != null) {
count++;
}
}
return count;
}
//1.创建一个新数组 大小等于老数组+1
//2.把老数组的内容复制过来。
public static Student[] creatNewArr(Student[] arr) {
Student[]newArr = new Student[arr.length+1];
//循环遍历的到老数组的每一个元素
for(int i = 0 ;i<arr.length ; i++) {
newArr[i] = arr[i];
}
return newArr;
}
public static void printArr(Student[] arr) {
for (int i = 0 ; i < arr.length ; i++) {
Student stu = arr[i];
if(stu != null) {
System.out.println(stu.getId() + "," + stu.getName() + "," + stu.getAge());
}
}
}
}