首页 > 其他分享 >第八节 面向对象2(其实就是综合训练)

第八节 面向对象2(其实就是综合训练)

时间:2023-07-18 11:44:25浏览次数:28  
标签:arr 数组 训练 int 第八节 面向对象 Student public String

知识点

面向对象

题目1

题目描述:

​ 定义数组存储3部汽车对象。

​ 汽车的属性:品牌,价格,颜色。

​ 创建三个汽车对象,数据通过键盘录入而来,并把数据存入到数组当中。

练习答案:

public class Car {
    private String brand;//品牌
    private int price;//价格
    private String color;//颜色


    public Car() {
    }

    public Car(String brand, int price, String color) {
        this.brand = brand;
        this.price = price;
        this.color = color;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}



public class CarTest {
    public static void main(String[] args) {
        //1.创建一个数组用来存3个汽车对象
        Car[] arr = new Car[3];

        //2.创建汽车对象,数据来自于键盘录入
        Scanner sc = new Scanner(System.in);
        for (int i = 0; i < arr.length; i++) {
            //创建汽车的对象
            Car c = new Car();
            //录入品牌
            System.out.println("请输入汽车的品牌");
            String brand = sc.next();
            c.setBrand(brand);
            //录入价格
            System.out.println("请输入汽车的价格");
            int price = sc.nextInt();
            c.setPrice(price);
            //录入颜色
            System.out.println("请输入汽车的颜色");
            String color = sc.next();
            c.setColor(color);

            //把汽车对象添加到数组当中
            arr[i] = c;
        }

        //3.遍历数组
        for (int i = 0; i < arr.length; i++) {
            Car car = arr[i];
            System.out.println(car.getBrand() + ", " + car.getPrice() + ", " + car.getColor());
        }
    }
}

题目2

题目描述:

​ 定义数组存储3部手机对象。

​ 手机的属性:品牌,价格,颜色。

​ 要求,计算出三部手机的平均价格

练习答案:

public class Phone {
    private String brand;//品牌
    private int price;//价格
    private String color;//颜色

    public Phone() {
    }

    public Phone(String brand, int price, String color) {
        this.brand = brand;
        this.price = price;
        this.color = color;
    }

    public String getBrand() {
        return brand;
    }

    public void setBrand(String brand) {
        this.brand = brand;
    }

    public int getPrice() {
        return price;
    }

    public void setPrice(int price) {
        this.price = price;
    }

    public String getColor() {
        return color;
    }

    public void setColor(String color) {
        this.color = color;
    }
}


public class PhoneTest {
    public static void main(String[] args) {
        //1.创建一个数组
        Phone[] arr = new Phone[3];

        //2.创建手机的对象
        Phone p1 = new Phone("小米",1999,"白色");
        Phone p2 = new Phone("华为",4999,"蓝色");
        Phone p3 = new Phone("魅族",3999,"红色");

        //3.把手机对象添加到数组当中
        arr[0] = p1;
        arr[1] = p2;
        arr[2] = p3;

        //4.获取三部手机的平均价格
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            //i 索引  arr[i] 元素(手机对象)
            Phone phone = arr[i];
            sum = sum + phone.getPrice();
        }

        //5.求平均值
        //数据能不写死,尽量不写死
        //int avg = sum / arr.length;

        double avg2 = sum * 1.0 / arr.length;

        System.out.println(avg2);//3665.6666666666665
    }
}

题目3:

题目描述:

​ 定义数组存储4个女朋友的对象

​ 女朋友的属性:姓名、年龄、性别、爱好

​ 要求1:计算出四女朋友的平均年龄

​ 要求2:统计年龄比平均值低的女朋友有几个?并把她们的所有信息打印出来。

练习答案:

public class GirlFriend {
    private String name;//姓名
    private int age;//年龄
    private String gender;//性别
    private String hobby;//爱好


    public GirlFriend() {
    }

    public GirlFriend(String name, int age, String gender, String hobby) {
        this.name = name;
        this.age = age;
        this.gender = gender;
        this.hobby = hobby;
    }

    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 String getGender() {
        return gender;
    }

    public void setGender(String gender) {
        this.gender = gender;
    }

    public String getHobby() {
        return hobby;
    }

    public void setHobby(String hobby) {
        this.hobby = hobby;
    }
}

public class GirlFriendTest {
    public static void main(String[] args) {
        //1.定义数组存入女朋友的对象
        GirlFriend[] arr = new GirlFriend[4];

        //2.创建女朋友对象
        GirlFriend gf1 = new GirlFriend("小诗诗",18,"萌妹子","吃零食");
        GirlFriend gf2 = new GirlFriend("小丹丹",19,"萌妹子","玩游戏");
        GirlFriend gf3 = new GirlFriend("小惠惠",20,"萌妹子","看书,学习");
        GirlFriend gf4 = new GirlFriend("小莉莉",21,"憨妹子","睡觉");

        //3.把对象添加到数组当中
        arr[0] = gf1;
        arr[1] = gf2;
        arr[2] = gf3;
        arr[3] = gf4;

        //4.求和
        int sum = 0;
        for (int i = 0; i < arr.length; i++) {
            //i 索引 arr[i] 元素(女朋友对象)
            GirlFriend gf = arr[i];
            //累加
            sum = sum + gf.getAge();
        }

        //5.平均值
        int avg = sum / arr.length;

        //6.统计年龄比平均值低的有几个,打印他们的信息
        int count = 0;
        for (int i = 0; i < arr.length; i++) {
            GirlFriend gf = arr[i];
            if(gf.getAge() < avg){
                count++;
                System.out.println(gf.getName() + ", " + gf.getAge() + ", " + gf.getGender() + ", " + gf.getHobby());
            }
        }

        System.out.println(count + "个");
    }
}

题目4:

题目描述:

​ 定义数组存储3个学生对象。

​ 学生的属性:学号,姓名,年龄。

​ 要求1:添加的时候需要进行学号的唯一性判断。

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

​ 要求3:通过id删除学生信息

​ 如果存在,则删除,如果不存在,则提示删除失败。

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

​ 要求5:id为2的学生,年龄+1岁

练习答案:

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;
    }
}



public class Test {
    public static void main(String[] args) {
        /*定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
        学生的属性:学号,姓名,年龄。
        要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
        要求2:添加完毕之后,遍历所有学生信息。
		*/

        //1.创建一个数组用来存储学生对象
        Student[] arr = new Student[3];
        //2.创建学生对象并添加到数组当中
        Student stu1 = new Student(1, "zhangsan", 23);
        Student stu2 = new Student(2, "lisi", 24);

        //3.把学生对象添加到数组当中
        arr[0] = stu1;
        arr[1] = stu2;


        //要求1:再次添加一个学生对象,并在添加的时候进行学号的唯一性判断。
        Student stu4 = new Student(1, "zhaoliu", 26);

        //唯一性判断
        //已存在 --- 不用添加
        //不存在 --- 就可以把学生对象添加进数组
        boolean flag = contains(arr, stu4.getId());
        if(flag){
            //已存在 --- 不用添加
            System.out.println("当前id重复,请修改id后再进行添加");
        }else{
            //不存在 --- 就可以把学生对象添加进数组
            //把stu4添加到数组当中
            //1.数组已经存满 --- 只能创建一个新的数组,新数组的长度 = 老数组 + 1
            //2.数组没有存满 --- 直接添加
            int count = getCount(arr);
            if(count == arr.length){
                //已经存满
                //创建一个新的数组,长度 = 老数组的长度 + 1
                //然后把老数组的元素,拷贝到新数组当中
                Student[] newArr = creatNewArr(arr);
                //把stu4添加进去
                newArr[count] = stu4;

                //要求2:添加完毕之后,遍历所有学生信息。
                printArr(newArr);

            }else{
                //没有存满
                //[stu1,stu2,null]
                //getCount获取到的是2,表示数组当中已经有了2个元素
                //还有一层意思:如果下一次要添加数据,就是添加到2索引的位置
                arr[count] = stu4;
                //要求2:添加完毕之后,遍历所有学生信息。
                printArr(arr);

            }
        }
    }


    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());
            }
        }
    }

    //创建一个新的数组,长度 = 老数组的长度 + 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;
    }


    //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
                int sid = stu.getId();
                //比较
                if(sid == id){
                    return true;
                }
            }
        }

        //当循环结束之后,还没有找到一样的,那么就表示数组中要查找的id是不存在的。
        return false;
    }


}



ublic class Test3 {
    public static void main(String[] args) {
        /*定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
        学生的属性:学号,姓名,年龄。

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


        //1.创建一个数组用来存储学生对象
        Student[] arr = new Student[3];
        //2.创建学生对象并添加到数组当中
        Student stu1 = new Student(1, "zhangsan", 23);
        Student stu2 = new Student(2, "lisi", 24);
        Student stu3 = new Student(3, "wangwu", 25);

        //3.把学生对象添加到数组当中
        arr[0] = stu1;
        arr[1] = stu2;
        arr[2] = stu3;

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

        //要找到id在数组中对应的索引
        int index = getIndex(arr, 2);
        if (index >= 0){
            //如果存在,则删除
            arr[index] = null;
            //遍历数组
            printArr(arr);
        }else{
            //如果不存在,则提示删除失败
            System.out.println("当前id不存在,删除失败");
        }
    }



    //1.我要干嘛?  找到id在数组中的索引
    //2.我需要什么? 数组 id
    //3.调用处是否需要继续使用方法的结果? 要
    public static int getIndex(Student[] arr , int id){
        for (int i = 0; i < arr.length; i++) {
            //依次得到每一个学生对象
            Student stu = arr[i];
            //对stu进行一个非空判断
            if(stu != null){
                int sid = stu.getId();
                if(sid == id){
                    return i;
                }
            }
        }

        //当循环结束之后,还没有找到就表示不存在
        return -1;
    }

    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());
            }
        }
    }
}


public class Test4 {
    public static void main(String[] args) {
        /*定义一个长度为3的数组,数组存储1~3名学生对象作为初始数据,学生对象的学号,姓名各不相同。
        学生的属性:学号,姓名,年龄。

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


        //1.创建一个数组用来存储学生对象
        Student[] arr = new Student[3];
        //2.创建学生对象并添加到数组当中
        Student stu1 = new Student(1, "zhangsan", 23);
        Student stu2 = new Student(2, "lisi", 24);
        Student stu3 = new Student(3, "wangwu", 25);

        //3.把学生对象添加到数组当中
        arr[0] = stu1;
        arr[1] = stu2;
        arr[2] = stu3;


        //4.先要找到id为2的学生对于的索引
        int index = getIndex(arr, 2);

        //5.判断索引
        if(index >= 0){
            //存在, 则将他的年龄+1岁
            Student stu = arr[index];
            //把原来的年龄拿出来
            int newAge = stu.getAge() + 1;
            //把+1之后的年龄塞回去
            stu.setAge(newAge);
            //遍历数组
            printArr(arr);
        }else{
            //不存在,则直接提示
            System.out.println("当前id不存在,修改失败");
        }


    }

    //1.我要干嘛?  找到id在数组中的索引
    //2.我需要什么? 数组 id
    //3.调用处是否需要继续使用方法的结果? 要
    public static int getIndex(Student[] arr , int id){
        for (int i = 0; i < arr.length; i++) {
            //依次得到每一个学生对象
            Student stu = arr[i];
            //对stu进行一个非空判断
            if(stu != null){
                int sid = stu.getId();
                if(sid == id){
                    return i;
                }
            }
        }

        //当循环结束之后,还没有找到就表示不存在
        return -1;
    }

    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());
            }
        }
    }
}

标签:arr,数组,训练,int,第八节,面向对象,Student,public,String
From: https://www.cnblogs.com/zj-zhajiangmian/p/17562464.html

相关文章

  • 开放原子训练营(第二季)RT-Thread Nano学习营刘玉宽
         4月22日周六,早早起床充满期待的来到了北京艾丽华酒店,参加“2023年RT-Thread线下培训”。这是疫情三年以来开放原子在北京第一次组织的线下活动。    进入到会场,被震撼了,好火爆啊————满满一屋子人,有白发苍苍的老者、有职场专家、有在校大学生、还有年仅6岁......
  • Pytorch自定义数据集模型完整训练流程
    2、导入各种需要用到的包importtorch  //用于导入名为"torch"的模块。torch 是一个广泛使用的库,用于构建和训练神经网络。它提供了丰富的功能和工具,包括张量操作、自动求导、优化算法等,使得深度学习任务更加简单和高效。可以使用torch.Tensor类来创建张量,使用torch.nn.Modul......
  • 人工智能LLM模型:奖励模型的训练、PPO 强化学习的训练、RLHF
    人工智能LLM模型:奖励模型的训练、PPO强化学习的训练、RLHF1.奖励模型的训练1.1大语言模型中奖励模型的概念在大语言模型完成SFT监督微调后,下一阶段是构建一个奖励模型来对问答对作出得分评价。奖励模型源于强化学习中的奖励函数,能对当前的状态刻画一个分数,来说明这个状态产......
  • 大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解
    大语言模型的预训练[1]:基本概念原理、神经网络的语言模型、Transformer模型原理详解、Bert模型原理介绍1.大语言模型的预训练1.LLM预训练的基本概念预训练属于迁移学习的范畴。现有的神经网络在进行训练时,一般基于反向传播(BackPropagation,BP)算法,先对网络中的参数进行随机初始......
  • 思维训练
    思维训练T1 在\([l,r]\)区间中找两个不同的数\(x,y\),使得\(l\le\gcd(x,y)\ler\)\(solution\): 只需要判断\(2\timesl\)在不在这个区间里面就可以,可以证明出这个是最小的一组满足条件的数了。T23533KLO-Bricks 贪心和优先队列可以再洛谷上过去,但是\(ACwing......
  • 第七节 面向对象
    知识点面向对象题目1(完成)定义手机类,手机有品牌(brand),价格(price)和颜色(color)三个属性,有打电话call()和sendMessage()两个功能。请定义出手机类,类中要有空参、有参构造方法,set/get方法。定义测试类,在主方法中使用空参构造创建对象,使用set方法赋值。调用对象的两个功能,打......
  • 33面向对象设计类的分类
    类的分类:边界类、控制类、实体类边界类:机器接口:AIP接口,人机交互:用户界面 如显示屏,打印机接口,菜单,标题等控制类:应用逻辑、业务逻辑、数据访问逻辑,如身份验证实体类:数据。学生实体判断控制类,先排除边界类和实体类......
  • 代码随想录算法训练营第三十二天| 343. 整数拆分 96.不同的二叉搜索树
     343.整数拆分要求:将一个正数拆分成N个正整数,使得这N个正整数的乘机是最大的思路:DP数组:dp[n]N的时候,它的乘机最大值注意:不是i*dp[n-i]就是最大值,因为如果用dp就证明要开始拆分了,如果我不拆分,就是用的这两个数的话,那么就是单纯的i*(n-i)代码:1//要求:将N拆分成K......
  • THU训练营预选赛2023
    比赛地址ATag:排列置换遍历排列中每个置换环,找到每个元素需要跳几次才能回到与之相同的元素(最多为环的长度个数)对每个元素所的次数取max点击查看代码//https://tsinghua.contest.codeforces.com/group/sTsHnFxwiH/contest/453495/problem/A#include<iostream>#......
  • 面向对象1
    面向对象1一、Java面向对象学习的三条主线:(第4-6章)1.Java类及类的成员:属性、方法、构造器﹔代码块、内部类2.面向对象的三大特征:封装性、继承性、多态性、(抽象性)3.其它关键字:this、super.static、final、abstract、interface、package面向过程(POP)与面向对象(OOP)......