定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。学生的属性:学号,姓名,年龄。
目录
要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
要求3:通过id删除学生信息如果存在,则删除,如果不存在,则提示删除失败。
要求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;
}
}
-------------------正文开始噜------------------
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;
}
}
运行结果如下:
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;
}
}
运行结果前:
运行结果后:
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;
}
}
修改前:
修改后: