You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java实现appendToPersonArr方法:将用户输入追加到私有Person数组

Course类Person数组追加功能实现方案

核心实现步骤

  • 解析用户输入字符串,转换为Person对象数组
  • 实现appendToPersonArr方法,完成私有数组的追加逻辑
  • 配套输入处理和打印方法,验证功能正确性

1. 先定义Person类

需要基础的属性、构造方法和toString方法,方便后续创建对象和打印:

public class Person {
    private int id;
    private String firstName;
    private String lastName;

    public Person(int id, String firstName, String lastName) {
        this.id = id;
        this.firstName = firstName;
        this.lastName = lastName;
    }

    @Override
    public String toString() {
        return "ID: " + id + ", 姓名: " + firstName + " " + lastName;
    }

    // 可选:如果需要单独访问属性,添加getter方法
    public int getId() { return id; }
    public String getFirstName() { return firstName; }
    public String getLastName() { return lastName; }
}

2. Course类完整实现

包含私有数组、输入解析、追加方法和打印方法:

import java.util.Scanner;

public class Course {
    // 初始化为空数组,避免空指针问题
    private Person[] teachAsst = new Person[0];
    private Person[] students = new Person[0];

    // 核心追加方法:srcArr是要追加的数组,mode指定目标(1=助教,2=学生)
    public void appendToPersonArr(Person[] srcArr, int mode) {
        if (srcArr == null || srcArr.length == 0) {
            return; // 空数组直接返回,不做无效操作
        }

        Person[] targetArr;
        // 根据mode确定要追加的目标数组
        if (mode == 1) {
            targetArr = teachAsst;
        } else if (mode == 2) {
            targetArr = students;
        } else {
            System.out.println("mode参数无效,仅支持1(助教)或2(学生)");
            return;
        }

        // 创建新数组,长度为原数组+待追加数组的长度
        Person[] newArr = new Person[targetArr.length + srcArr.length];
        // 复制原数组元素到新数组
        System.arraycopy(targetArr, 0, newArr, 0, targetArr.length);
        // 复制待追加数组元素到新数组末尾
        System.arraycopy(srcArr, 0, newArr, targetArr.length, srcArr.length);

        // 更新私有数组引用
        if (mode == 1) {
            teachAsst = newArr;
        } else {
            students = newArr;
        }
    }

    // 处理用户输入,转换为Person数组
    public Person[] parseInputToPersonArr() {
        Scanner scanner = new Scanner(System.in);
        System.out.println("请输入人员信息(格式:id, 名, 姓; id, 名, 姓;…):");
        String input = scanner.nextLine().trim();

        if (input.isEmpty()) {
            return new Person[0];
        }

        // 分号分割每个Person的字符串
        String[] personStrs = input.split(";");
        Person[] tempPersons = new Person[personStrs.length];

        for (int i = 0; i < personStrs.length; i++) {
            // 逗号分割属性,同时去除前后空格
            String[] attrs = personStrs[i].trim().split(",");
            if (attrs.length != 3) {
                System.out.println("第" + (i+1) + "条人员信息格式错误,跳过");
                tempPersons[i] = null;
                continue;
            }

            try {
                int id = Integer.parseInt(attrs[0].trim());
                String firstName = attrs[1].trim();
                String lastName = attrs[2].trim();
                tempPersons[i] = new Person(id, firstName, lastName);
            } catch (NumberFormatException e) {
                System.out.println("第" + (i+1) + "条人员信息的ID格式错误,跳过");
                tempPersons[i] = null;
            }
        }

        // 过滤掉格式错误的null元素
        int validCount = 0;
        for (Person p : tempPersons) {
            if (p != null) validCount++;
        }
        Person[] validPersons = new Person[validCount];
        int index = 0;
        for (Person p : tempPersons) {
            if (p != null) {
                validPersons[index++] = p;
            }
        }

        return validPersons;
    }

    // 打印助教列表
    public void printTeachAssts() {
        System.out.println("=== 助教列表 ===");
        for (Person p : teachAsst) {
            System.out.println(p);
        }
    }

    // 打印学生列表
    public void printStudents() {
        System.out.println("=== 学生列表 ===");
        for (Person p : students) {
            System.out.println(p);
        }
    }
}

3. 测试类验证功能

用主类测试输入、追加和打印流程:

public class TestCourse {
    public static void main(String[] args) {
        Course mathCourse = new Course();

        // 输入助教信息并追加
        Person[] tas = mathCourse.parseInputToPersonArr();
        mathCourse.appendToPersonArr(tas, 1);
        mathCourse.printTeachAssts();

        // 输入学生信息并追加
        Person[] students = mathCourse.parseInputToPersonArr();
        mathCourse.appendToPersonArr(students, 2);
        mathCourse.printStudents();
    }
}

关键注意点

  • 初始数组设为空数组new Person[0],避免后续操作出现空指针异常
  • 用System.arraycopy复制数组,比手动循环更高效简洁
  • 输入解析时做了格式校验和错误处理,防止非法输入导致程序崩溃
  • 通过mode参数区分助教和学生数组,复用同一套追加逻辑

内容的提问来源于stack exchange,提问作者z.....k

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 22:47:45