java对象数组

对象数组题目:
定义类Student,包含三个属性:学号number(int),年级state(int),成绩
score(int)。 创建20个学生对象,学号为1到20,年级和成绩都由随机数确定。
问题一:打印出3年级(state值为3)的学生信息。
问题二:使用冒泡排序按学生成绩排序,并遍历所有学生信息

package com.company;

public class Student {
   private int number; // 学号
   private int state; // 年级
   private int score; // 成绩


    public int getNumber() {
        return number;
    }

    public void setNumber(int number) {
        this.number = number;
    }

    public int getState() {
        return state;
    }

    public void setState(int state) {
        this.state = state;
    }

    public int getScore() {
        return score;
    }

    public void setScore(int score) {
        this.score = score;
    }
}

package com.company;

public class Main {

    /**
     * 文档注释
     *
     * @param args
     * @lzx
     */
    public static void main(String[] args) {


        Student[] list = new Student[20]; // 对象数组
        // 自动生成数据
        for (int i = 1; i <= list.length; i++) {

            Student stu = new Student();
            stu.setNumber(i); //设置学号

            int state = (int) (Math.random() * 6 + 1);
            stu.setState(state); // 设置年级

            int score = (int) (Math.random() * 100);
            stu.setScore(score); // 设置分数0-99

            list[i - 1] = stu; // 存对象
        }

        getStundentMessage(6, list);// 打印某年级的学生信息。
        System.out.println("==========================================");
        maoPao(list); //冒泡打印

    }

    public static void getStundentMessage(int state, Student[] list) {// 打印某年级的学生信息。

        for (int i = 0; i < list.length; i++) {
            int st = list[i].getState();
            if (st == state) {
                System.out.println("学号:" + list[i].getNumber() + ",年级:" + list[i].getState() + ",分数为:" + list[i].getScore());
            }
        }
    }

    public static void maoPao(Student[] list) { //冒泡排序
        for (int i = 0; i < list.length; i++) {
            for (int j = 0; j < list.length - 1 - i; j++) {
                if (list[j].getScore() < list[j + 1].getScore()) { //分数低的交换到后面
                    Student temp = list[j];
                    list[j] = list[j + 1];
                    list[j + 1] = temp;
                }
            }
        }

        // 遍历打印
        for (int i = 0; i < list.length; i++){
            System.out.println("学号:"+list[i].getNumber() + ",年级:" + list[i].getState() + ",分数:" + list[i].getScore() );
        }

    }

}

### Java 对象数组的使用方法 在 Java 中,对象数组是由对象引用构成的数组。与基本数据类型数组不同的是,对象数组存储的是指向实际对象的引用,而不是直接存储对象本身的数据[^4]。 以下是创建和使用对象数组的一个简单示例: #### 创建并初始化对象数组 ```java class Student { String name; int age; public Student(String name, int age) { this.name = name; this.age = age; } @Override public String toString() { return "Student{name='" + name + "', age=" + age + "}"; } } public class ObjectArrayExample { public static void main(String[] args) { // 声明一个长度为3的对象数组 Student[] students = new Student[3]; // 初始化对象数组中的每个元素 students[0] = new Student("Alice", 20); students[1] = new Student("Bob", 22); students[2] = new Student("Charlie", 21); // 遍历对象数组并打印其内容 for (Student student : students) { System.out.println(student); } } } ``` 在这个例子中,`students` 是一个 `Student` 类型的对象数组。通过实例化 `Student` 的多个对象并将它们赋值给数组的不同索引位置来填充该数组。最后,利用增强型 `for` 循环遍历整个数组,并调用 `toString()` 方法显示每个学生的信息。 #### 注意事项 如果尝试访问尚未被分配任何对象数组元素,则会抛出 `NullPointerException` 错误。因此,在使用之前应始终确认已正确初始化每一个所需的位置。 --- ### 结合其他功能扩展应用 当涉及到更复杂的场景时,还可以结合前面提到的一些技术点进一步优化程序逻辑。例如,可以通过定义专门用于处理输入输出的方法简化主函数结构;或者借助于标准库类如 `Arrays` 来实现更加高效的数组操作[^1][^2]。 下面展示如何将上述概念结合起来构建稍微复杂一点的应用案例——统计一组学生的平均年龄: ```java import java.util.Arrays; class Student { private final String name; private final int age; public Student(String name, int age) { this.name = name; this.age = age; } public int getAge() { return age; } @Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } } public class AverageAgeCalculator { public static double calculateAverageAge(Student[] students) { if (students == null || students.length == 0) { throw new IllegalArgumentException("The array must not be empty."); } int sumOfAges = 0; for (Student s : students) { sumOfAges += s.getAge(); } return (double) sumOfAges / students.length; } public static void main(String[] args) { Student[] group = { new Student("David", 19), new Student("Eve", 23), new Student("Frank", 25) }; System.out.println("All Students:"); Arrays.stream(group).forEach(System.out::println); double avgAge = calculateAverageAge(group); System.out.printf("\nAverage Age of the Group: %.2f%n", avgAge); } } ``` 此版本不仅实现了基础的功能需求,还增加了异常检测机制以及更为优雅的结果呈现方式. ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值