对象数组练习

这篇文章展示了如何在Java中使用数组存储和操作对象,包括创建商品、汽车、手机等对象,键盘输入添加对象,遍历数组,计算平均价格,以及处理学生对象的添加、删除和年龄统计。此外,还涉及了动态扩展数组和查找、删除指定ID的学生。
摘要由CSDN通过智能技术生成

 public static void main(String[] args) {


        //定义一个数组存储商品
        Goods[] arr = new Goods[3];
        //创建3个商品对象
        Goods g1 = new Goods(1001, "手机", 1999, 100);
        Goods g2 = new Goods(1002, "手提包", 2000, 90);
        Goods g3 = new Goods(1003, "鞋子", 300, 500);
        //添加商品到数组
        arr[0]=g1;
        arr[1]=g2;
        arr[2]=g3;
        //遍历数组
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i].getGoodsName()+','+arr[i].getPrize()+","+arr[i].getStock());
        }
    }

import java.util.Scanner;

public class CatText {
    public static void main(String[] args) {
        Scanner sc= new Scanner(System.in);
        //创建数组
        Cat[] arr=new Cat[3];
        //键盘录入加入数组
        for(int i=0;i<=2;i++) {
            //创建汽车对象
            Cat c1=new Cat();
            System.out.print("请输入汽车品牌:");
            String a = sc.next();
            System.out.print("请输入汽车价格:");
            int b = sc.nextInt();
            System.out.print("请输入汽车颜色:");
            String c = sc.next();
            c1.setBrand(a);
            c1.setPrize(b);
            c1.setColour(c);
            //存储到数组
            arr[i]=c1;

        }
        //遍历数组;
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i].getBrand()+','+arr[i].getPrize()+','+arr[i].getColour());
        }
    }

public static void main(String[] args) {
        //定义数组
        Phone[] arr=new Phone[3];
        //创建手机对象
        Phone p1=new Phone("vivo",1999,"白色");
        Phone p2=new Phone("小米",4999,"蓝色");
        Phone p3= new Phone("苹果",3999,"白色");
        //添加到数组
        arr[0]=p1;
        arr[1]=p2;
        arr[2]=p3;
        //遍历数组
        //求和
        int add=0;
        for (int i = 0; i < arr.length; i++) {
            add+=arr[i].getPrize();
        }
        //打印平均价格
        double avg=add*1.0/ arr.length;
        System.out.println("三部手机的平均价格为:"+avg);

    }

 public static void main(String[] args) {
        girlFriend[] friends=new girlFriend[4];
        //定义4个女朋友对象
        girlFriend g1=new girlFriend();
        girlFriend g2=new girlFriend();
        girlFriend g3=new girlFriend();
        girlFriend g4=new girlFriend();
        //存放进数组
        friends[0]=g1;
        friends[1]=g2;
        friends[2]=g3;
        friends[3]=g4;
        //set_age
        g1.setAge(22);
        g2.setAge(19);
        g3.setAge(20);
        g4.setAge(23);
    //add
        int add=0;
        for (int i = 0; i < friends.length; i++) {
            add+=friends[i].getAge();

        }
        //计算平均age
        double avg_age=add*1.0/friends.length;
        //统计年龄比平均值低5的
        //记录有几个
        int count=0;
        for (int i = 0; i < friends.length; i++) {
            if(avg_age>friends[i].getAge()){
                count++;
                System.out.println(friends[i].getAge());
            }
        }
        System.out.println(count);
    }

前二个问:

 public static void main(String[] args) {
        //定义数组
        Student[] arr=new Student[3];
        //创建学生对象并添加到数组
        Student stu1=new Student(1,"张三",23);
        Student stu2=new Student(2,"李四",22);
        Student stu3=new Student(3,"王五",24);
        //把学生对象添加到数组当中
        arr[0]=stu1;
        arr[1]=stu2;
        arr[2]=stu3;
        //第一题:此时有2种情况,可能数组已经存满需要新的数组,可能没有存满直接添加.
        //创建一个新的学生对象.
        Student stu4=new Student(4,"zaolu",25);
        //判断id是否存在
        boolean flag=select(arr,stu4.getId());
        if(flag){
            System.out.println("当前学生id已经存在,无需添加!");
        }else{
            //1.判断原有数组是否存满
            if(count(arr)== arr.length){
                //存满,则复制原有数组元素,添加到一个新的数组
                Student[] new_arr=copynuwarr(arr);
                //添加新的学生到新的数组
                new_arr[arr.length]=stu4;
                //把创建的新数组地址赋值给以前的数组
                arr=new_arr;

            }else {
                //没有存满,则直接把新的学生添加进缘来的数组
                arr[count(arr)]=stu4;
            }
        }

        //第二问:添加完毕后,遍历所有学生信息
        for (int i = 0; i < arr.length; i++) {
            System.out.println(arr[i].getId()+","+arr[i].getName()+','+arr[i].getAge());
        }

        //第三位通过学生id删除学生;
        

    }

    //定义一个查看数组是否重复的方法
    public static boolean select(Student[] num,int id){
        for (int i = 0; i < num.length; i++) {
            if (num[i].getId()==id){
                return true;
            }
        }
        return false;
    }
    //定义一个方法统计数组里的元素个数
    public static int count(Student[] num){
        //记录个数
        int count=0;
        for (int i = 0; i < num.length; i++) {
            if (num[i]!=null){
                count++;
            }
        }
        return count;
    }
    //定义一个方法添加一个性的学生到一个新的数组.
    public static Student[] copynuwarr(Student[] num){
        //创建一个新的数组
        Student[] newarr=new Student[num.length+1];
        //复制原有数组元素到新的数组
        for (int i = 0; i < num.length; i++) {
            newarr[i]=num[i];
        }
        return newarr;
    }

后二问:

该题需要注意的是要删除一个学生,则要找到该学生在数组对应的索引,把对应索引的值改为null则成功删除了该学生,在查找索引的时候要注意数组中可能存在null值,直接进行判断会报错,所以要先确保学生在这个数组中。

public static int select(Student[] num,int id){
for (int i = 0; i < num.length; i++) {
//判断每个学生对象都存在数组当中,排除不存在的索引位(数组中已经存在的学生id),防止报错
Student stu=num[i];
if(stu!=null){
if(id==stu.getId()){
return id;
}
}
}
return -1;// Java中不存在-1索引.
}

完整代码:

 public static void main(String[] args) {
        //定义数组
        Student[] arr=new Student[3];
        //创建学生对象并添加到数组
        Student stu1=new Student(1,"张三",23);
        Student stu2=new Student(2,"李四",22);
        Student stu3=new Student(3,"王五",24);
        //把学生对象添加到数组当中
        arr[0]=stu1;
        arr[1]=stu2;
        arr[2]=stu3;
        Scanner sc=new Scanner(System.in);

        //问题3:通过id删除学生信息,存在则删除,不存在,则提示
        //1.键盘接收要查找的学生信息
        System.out.print("请输入你要删除的学生id:");
        int input_id=sc.nextInt();
        //2.判断该id在数组中是否存在
        int answer=select(arr,input_id);
        //2.1 不存在,则给出不存在提示
        if (answer==-1){
            System.out.println("该id在数据中不存在!");
        }else {
            //2.2 存在,删除
            arr[answer]=null;
            System.out.println("删除成功!");
        }
        //查看删除后的学生信息;
        for (int i = 0; i < arr.length; i++) {
            Student stu=arr[i];
            //确保学生存在这个数组中,防止报错.
            if(stu!=null){
                //打印对应学生信息
                System.out.println(stu.getId()+','+stu.getName()+','+stu.getAge());
            }
        }
    }
    //判断id是否存在方法;
    public static int select(Student[] num,int id){
        for (int i = 0; i < num.length; i++) {
            //判断每个学生对象都存在数组当中,排除不存在的索引位(数组中已经存在的学生id),防止报错
            Student stu=num[i];
            if(stu!=null){
                if(id==stu.getId()){
                    return id;
                }
            }
        }
        return -1;//  Java中不存在-1索引.
    }

 最后一问:

 

public class StudentText3 {
    public static void main(String[] args) {
        //定义数组
        Student[] arr=new Student[3];
        //创建学生对象并添加到数组
        Student stu1=new Student(1,"张三",23);
        Student stu2=new Student(2,"李四",22);
        Student stu3=new Student(3,"王五",24);
        //把学生对象添加到数组当中
        arr[0]=stu1;
        arr[1]=stu2;
        arr[2]=stu3;
        Scanner sc=new Scanner(System.in);
        System.out.print("请输入,你要查询的id:");
        int id=sc.nextInt();
        int num=select(arr,id);
        if (num==-1){
            System.out.println("该学生不存在");
        } else if (num>=0) {
            int old_age=arr[num].getAge();
            arr[num].setAge(old_age+1);
        }
        //遍历所有学生
        for (int i = 0; i < arr.length; i++) {
            Student stu=arr[i];
            if (stu!=null){
                System.out.println(stu.getId()+stu.getName()+stu.getAge());
            }
        }

    }
    public static int select(Student[] num,int id){
        for (int i = 0; i < num.length; i++) {
            //判断每个学生对象都存在数组当中,排除不存在的索引位(数组中已经存在的学生id),防止报错
            Student stu=num[i];
            if(stu!=null){
                if(id==stu.getId()){
                    return id;
                }
            }
        }
        return -1;//  Java中不存在-1索引.
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值