student类:
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;
}
}
要求1、2:增加并遍历
//面向对象数组练习---添加和遍历
//要求1:添加一个学生对象,保证学号唯一性
//要求2:添加完毕之后,遍历所有学生信息
public class Test {
public static void main(String[] args) {
Student[] arr = new Student[3];//创建数组存3个学生类对象
Student s1 = new Student(1,"小王",20);//创建对象
Student s2 = new Student(2,"小赵",25);
Student s3 = new Student(3,"小李",26);
arr[0]=s1;//对象地址存进数组
arr[1]=s2;
arr[2]=s3;
//要求1:添加一个学生对象,保证学号唯一性
Student s4 = new Student(4,"小孙",27);
boolean flag = contains(s4.getId(),arr);
if(flag){//id已存在,不用添加
System.out.println("当前id重复,请修改id后再进行添加");
}else {//id不存在,s4添加进数组
//1.数组已满,创建新数组后添加,新数组长度=老数组+1
//2.数组未满,直接添加
int count = getCount(arr);
if (count==arr.length){//存满了
Student[] newArr = creatNewArr(arr);
newArr[newArr.length-1]=s4;
//要求2:添加完毕之后,遍历所有学生信息
printArr(newArr);
}else {//没存满
//getCount获取到的count值是2,表示数组中已经有2个元素[s1,s2,null]
//如果下一次要添加数据,就是添加到2索引的位置
arr[count]=s4;
//要求2:添加完毕之后,遍历所有学生信息
printArr(arr);
}
}
}
//要求2:添加完毕之后,遍历所有学生信息
public static void printArr(Student[] arr){
for (int i = 0; i < arr.length; i++) {
Student student = arr[i];
if (student!=null){
System.out.println(student.getId()+" "+student.getName()+" "+student.getAge());
}
}
}
//创建新数组,长度=老数组+1
//并把老数组元素拷贝到新数组中
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 int getCount(Student[] arr){
int count =0;//计数
for (int i = 0; i < arr.length; i++) {
if (arr[i]!=null){
count++;
}
}
return count;
}
//判断id是否已存在
public static boolean contains(int id,Student[] arr){
for (int i = 0; i < arr.length; i++) {
Student student = arr[i];
if (student!=null){
if (id==student.getId()){//id已存在
return true;
}
}
}
return false;//id不存在
}
}
要求3、4:删除并遍历
//面向对象数组练习---删除
//要求3:通过id删除学生信息
//要求4:删除后遍历所有学生信息
public class Test2 {
public static void main(String[] args) {
Student[] arr = new Student[3];
Student s1 = new Student(1,"小王",20);
Student s2 = new Student(2,"小赵",25);
Student s3 = new Student(3,"小李",26);
arr[0]=s1;
arr[1]=s2;
arr[2]=s3;
//要求3:通过id删除学生信息
//id存在--删除,id不存在--删除失败
int index = getIndex(2,arr);
if (index>=0){//id存在--删除
arr[index] = null;
printArr(arr);
}else {//id不存在--删除失败
System.out.println("id不存在,删除失败");
}
}
//找到id在数组中的索引
public static int getIndex(int id,Student[] arr){
for (int i = 0; i < arr.length; i++) {
Student student = arr[i];
if (student!=null){
if (id==student.getId()){
return i;
}
}
}
return -1;
}
//遍历所有学生信息
public static void printArr(Student[] arr){
for (int i = 0; i < arr.length; i++) {
Student student = arr[i];
if (student!=null){
System.out.println(student.getId()+" "+student.getName()+" "+student.getAge());
}
}
}
}
要求5:修改
//面向对象数组练习---修改
//要求5:查询id为2的学生,如果存在,将他的年龄+1
public class Teat3 {
public static void main(String[] args) {
Student[] arr = new Student[3];
Student s1 = new Student(1,"小王",20);
Student s2 = new Student(2,"小赵",25);
Student s3 = new Student(3,"小李",26);
arr[0]=s1;
arr[1]=s2;
arr[2]=s3;
//要求5:查询id为2的学生,如果存在,将他的年龄+1
int index = getIndex(2,arr);
if(index>=0){
Student student = arr[index];//student:id为2的学生对象
int newAge = student.getAge()+1;
student.setAge(newAge);
printArr(arr);
}else {
System.out.println("当前id不存在,修改失败");
}
}
//找到id在数组中的索引
public static int getIndex(int id,Student[] arr){
for (int i = 0; i < arr.length; i++) {
Student student = arr[i];
if (student!=null){
if (id==student.getId()){
return i;
}
}
}
return -1;
}
//遍历所有学生信息
public static void printArr(Student[] arr){
for (int i = 0; i < arr.length; i++) {
Student student = arr[i];
if (student!=null){
System.out.println(student.getId()+" "+student.getName()+" "+student.getAge());
}
}
}
}