复杂对象数组练习,面向对象综合练习 --------黑马程序员练习

该代码示例展示了如何在Java中使用数组管理学生对象,包括添加学生时检查学号的唯一性,遍历所有学生信息,通过学号删除学生,以及查询并更新学生年龄。
摘要由CSDN通过智能技术生成

定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。学生的属性:学号,姓名,年龄

目录

                  要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。

要求2:添加完毕之后,遍历所有学生信息。

要求3:通过id删除学生信息如果存在,则删除,如果不存在,则提示删除失败。

要求4:删除完毕之后,遍历所有学生信息。

要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁


准备工作:

    1.     先创建一个类储存学生的属性并进行封装,添加无参构造和全参构造,代码如下: 

package rubbish;

public class R94a {
	private int id;
	private String name;
	private int 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;
	}
	public R94a(){
		
	}
	public R94a(int id,String name,int age){
		this.id=id;
		this.name=name;
		this.age=age;
		
	}
}

2. 完成题目的主体要求定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同

public class R94b {

	public static void main(String[] args) {
		//创建一个数组用来存储R94a类对象形成的一个数组
		R94a[] arr=new R94a[3];
		// 创建学生对象并添加到数组当中
		R94a stu1=new R94a(1,"zhangsan",23);
		R94a stu2=new R94a(2,"lisi",24);
		R94a stu3=new R94a(3,"wangwu",25);
		//把学生对象添加到数组当中
		arr[0]=stu1;
		arr[1]=stu2;
		arr[2]=stu3;
		
	}

}


-------------------正文开始噜------------------

要求1、2:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断,添加完毕之后,遍历所有学生信息

package rubbish;

public class R94b {

	public static void main(String[] args) {
		//创建一个数组用来存储R94a类对象形成的一个数组
		R94a[] arr=new R94a[4];
		// 创建学生对象并添加到数组当中
		R94a stu1=new R94a(1,"zhangsan",23);
		R94a stu2=new R94a(2,"lisi",24);
		R94a stu3=new R94a(3,"wangwu",25);
		//把学生对象添加到数组当中
		arr[0]=stu1;
		arr[1]=stu2;
		arr[2]=stu3;
		
		//创建一个新的学生对象,学号id是4
		R94a stu4=new R94a(4,"zhaoliu",26);
		//存在,就不添加。
		boolean flag=contains(arr,stu4.getId());
		if(flag){
			System.out.println("当前id重复,请修改id后再进行添加");
		}else{
			//不存在就添加
			int count=getCount(arr);
			if(count==arr.length){
			//若数组已经存满,那么就创建一个新的数组,新数组长度加一并将旧数组的的数据复制到新数组中
			R94a[] newArr=creatNewArr(arr);
			
			newArr[count]=stu4;
			for(int i=0;i<newArr.length;i++){
				System.out.println(newArr[i].getId()+"  "+newArr[i].getName()
						+"  "+newArr[i].getAge());
			}
			}else{
			//若数组没有存满,就直接添加
			arr[count]=stu4;
			for(int i=0;i<arr.length;i++){
				System.out.println(arr[i].getId()+"  "+arr[i].getName()
						+"  "+arr[i].getAge());
			}
			}	
		}
	}
	//创建一个新数组并把旧数组里面的数据拷贝到新数组中
	public static R94a[] creatNewArr(R94a[] arr){
		R94a[] newArr=new R94a[arr.length+1];
		//通过循环遍历旧数组,把数据存入新数组
		for(int i=0;i<arr.length;i++){
			newArr[i]=arr[i];
		}
		return newArr;
		
	}
	
	
	//定义一个方法得出数组内部已经存了多少个元素
	public static int getCount(R94a[] arr){
		//定义一个临时变量,记录有多少条数据
		int count=0;
		for(int i=0;i<arr.length;i++){
			if(arr[i]!=null){
				count++;
			}
		}
		return count;
		
	}
	
		//先判断是否唯一,如果唯一就存进去就判断数组满没满,如果不唯一就不存
		public static boolean contains(R94a[]arr,int id){
		//获取数组里面的每一个学生对象,获取学生id,用id判断是否唯一
			for(int i=0;i<arr.length;i++){
			R94a stu=arr[i];
			//获取数组中学生对象的id
			//数组有可能没有装满获取到null,直接运行代码会报错,所以加一个if判断
			if(stu!=null){
			int sid=stu.getId();
			if(sid ==id){
				return true;
			} 
			}
		}
			return false;
	}
			
}

运行结果如下:

要求3、4:通过id删除学生信息如果存在,则删除,如果不存在,则提示删除失败删除完毕之后,遍历所有学生信息。

package rubbish;

public class R94b {

	public static void main(String[] args) {
		//创建一个数组用来存储R94a类对象形成的一个数组
		R94a[] arr=new R94a[4];
		// 创建学生对象并添加到数组当中
		R94a stu1=new R94a(1,"zhangsan",23);
		R94a stu2=new R94a(2,"lisi",24);
		R94a stu3=new R94a(3,"wangwu",25);
		//把学生对象添加到数组当中
		arr[0]=stu1;
		arr[1]=stu2;
		arr[2]=stu3;
		//要求3:通过id删除学生信息如果存在,则删除,如果不存在,则提示删除失败
		int id=getId(arr,2);
		if(id>=0){
		//存在,就删除,也就是把数据变成null
			arr[id]=null;
			print(arr);
		}else{
		//不存在,就显示删除失败
			System.out.println("id不存在,删除失败");
		}
		}
	
	//循环遍历一遍
	public static void print(R94a[] arr){
		for(int i=0;i<arr.length;i++){
			R94a stu=arr[i];
			if(stu!=null){
				System.out.println(stu.getId()+"  "
				+stu.getName()+"  "+stu.getAge());
			}
		}
	}
	//得到id,循环找id,如果没有找到相应id,就返回-1
	public static int getId (R94a[] arr,int id){
		for(int i=0;i<arr.length;i++){
		R94a stu=arr[i];
		if(stu!=null){
			int sid=stu.getId();
			if(sid == id){
				return i;
			}
		}
		}
		//
		return -1;
		
	}
}

运行结果前: 

运行结果后: 

要求5:查询数组id为“heima002”的学生,如果存在,则将他的年龄+1岁 

package rubbish;

public class R94b {

	public static void main(String[] args) {
		//创建一个数组用来存储R94a类对象形成的一个数组
		R94a[] arr=new R94a[4];
		// 创建学生对象并添加到数组当中
		R94a stu1=new R94a(1,"zhangsan",23);
		R94a stu2=new R94a(2,"lisi",24);
		R94a stu3=new R94a(3,"wangwu",25);
		//把学生对象添加到数组当中
		arr[0]=stu1;
		arr[1]=stu2;
		arr[2]=stu3;
		//要求3:通过id修改学生信息如果存在,则修改,如果不存在,则提示修改失败
		int id=getId(arr,2);
		if(id>=0){
		//存在,就修改,年龄+1
		R94a stu=arr[id];
		int newAge=stu.getAge()+1;
		stu.setAge(newAge);
		print(arr);
		}else{
		//不存在,就显示修改失败
			System.out.println("id不存在,修改失败");
		}
		}
	
	//循环遍历一遍
	public static void print(R94a[] arr){
		for(int i=0;i<arr.length;i++){
			R94a stu=arr[i];
			if(stu!=null){
				System.out.println(stu.getId()+"  "
				+stu.getName()+"  "+stu.getAge());
			}
		}
	}
	//得到id,循环找id,如果没有找到相应id,就返回-1
	public static int getId (R94a[] arr,int id){
		for(int i=0;i<arr.length;i++){
		R94a stu=arr[i];
		if(stu!=null){
			int sid=stu.getId();
			if(sid == id){
				return i;
			}
		}
		}
		//
		return -1;
		
	}
}

修改前: 

 修改后: 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值