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

Java如何通过getter打印ArrayList中存储的String数组内容并解决相关报错?

问题根因
  • 类型不匹配报错的核心原因:Arrays.toString(coursesList) 的返回值是String类型,但你定义的getCourses()方法返回值声明为String[],二者类型不匹配导致编译报错。
  • 数组打印显示内存地址的核心原因:Java数组的默认toString()方法继承自Object类,输出格式为[类型@哈希值],不会输出数组内部的实际内容。
  • 直接打印对象仅显示部分信息的原因:你没有重写NewRegandLogin类的toString()方法,默认的对象toString方法仅会输出类名和哈希值,你看到的姓名、ID信息如果是已有的输出,说明你写了部分toString逻辑但没有包含课程数组的格式化处理。
修复方案

1. 修正getter方法

二选一即可:

方案A:保留数组返回值

如果业务需要返回原始数组做后续处理,修改getter为:

// 注意导入java.util.Arrays
public String[] getCourses() {
    return coursesList;
}

方案B:改为返回格式化字符串

如果getter仅用于打印场景,直接返回格式化后的字符串即可:

// 注意导入java.util.Arrays
public String getCourses() {
    // 先过滤掉空元素和终止输入的S/s,再格式化
    int validLength = 0;
    for (String course : coursesList) {
        if (course == null || course.equalsIgnoreCase("s")) {
            break;
        }
        validLength++;
    }
    String[] validCourses = Arrays.copyOf(coursesList, validLength);
    return Arrays.toString(validCourses);
}

2. 完善toString方法

在NewRegandLogin类中添加重写的toString方法,统一格式化对象输出内容:

@Override
public String toString() {
    // 如果选了方案A,这里把getCourses()替换为Arrays.toString(getCourses())即可
    return "Alumni Name: " + alumniFirstName + " " + alumniLastName + "\n" +
           "Alumni ID: " + alumniId + "\n" +
           "Courses completed: " + getCourses();
}

3. 可选优化:修复课程存储冗余问题

你现有代码会把终止输入的S/s也存入课程数组,可修改setAlumniCourses逻辑避免冗余:

public void setAlumniCourses() {
    coursesList = new String[10];
    for (int i=0; i < coursesList.length; i++) {
        System.out.println("Completed Course Name: ");
        String input = scanner.next();
        if(input.equalsIgnoreCase("s")) {
            break;
        }
        coursesList[i] = input;
    }
}
最终效果

修改后运行程序,课程部分会输出类似Courses completed: [Java, Python, MySQL]的可读内容,不会再出现内存地址,类型不匹配的编译报错也会消失。

内容的提问来源于stack exchange,提问作者Geri Glazer

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:36:03