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

Scanner与字母ArrayList问题:声明courses数组列表遇代码问题,需实现打印功能

嘿,我来帮你搞定这个问题!看起来你在声明courses ArrayList和处理课程+对应备注的打印时遇到了麻烦,我给你整理了完整的解决方案,一步步来:

1. 先搞定courses ArrayList的正确声明

很多时候声明失败的原因要么是没导入必要的包,要么是泛型使用不规范。考虑到你需要存储课程和对应备注,最清晰的方式是自定义一个Course类来封装这两个属性,然后把ArrayList的泛型指定为这个类。

首先要记得在代码顶部导入ArrayList和Scanner的包:

import java.util.ArrayList;
import java.util.Scanner;

然后定义Course类:

class Course {
    // 封装课程名称和备注属性
    private String courseName;
    private String note;

    // 构造方法,用于创建Course对象
    public Course(String courseName, String note) {
        this.courseName = courseName;
        this.note = note;
    }

    // Getter方法,方便后续打印时获取属性值
    public String getCourseName() {
        return courseName;
    }

    public String getNote() {
        return note;
    }
}

接下来就能正确声明courses ArrayList了:

ArrayList<Course> courses = new ArrayList<>();
2. 结合Scanner实现输入 + 打印功能

下面是完整的可运行代码,包含了Scanner输入课程和备注,以及打印所有课程信息的逻辑:

public class CourseManager {
    public static void main(String[] args) {
        // 正确声明courses ArrayList
        ArrayList<Course> courses = new ArrayList<>();
        Scanner scanner = new Scanner(System.in);

        // 循环输入课程,直到用户输入"exit"结束
        while (true) {
            System.out.print("请输入课程名称(输入exit结束输入):");
            String courseName = scanner.nextLine();
            
            // 退出条件
            if (courseName.equalsIgnoreCase("exit")) {
                break;
            }

            System.out.print("请输入该课程的备注:");
            String note = scanner.nextLine();

            // 将课程和备注封装成Course对象,添加到ArrayList中
            courses.add(new Course(courseName, note));
            System.out.println("课程已添加!\n");
        }

        scanner.close();

        // 调用打印方法
        printCourseDetails(courses);
    }

    // 专门的打印方法,实现课程及对应备注的输出
    private static void printCourseDetails(ArrayList<Course> courses) {
        System.out.println("\n===== 课程列表及备注 =====");
        if (courses.isEmpty()) {
            System.out.println("暂无课程记录");
            return;
        }

        // 遍历ArrayList,逐个打印课程信息
        for (int i = 0; i < courses.size(); i++) {
            Course currentCourse = courses.get(i);
            System.out.printf("第%d门课程:%s\n备注:%s\n", i+1, currentCourse.getCourseName(), currentCourse.getNote());
            System.out.println("-------------------------");
        }
    }
}
3. 常见故障排查

如果你的代码还是有问题,可以检查这几个点:

  • 忘记导入包:没有import java.util.ArrayList;或import java.util.Scanner;会直接导致编译错误,一定要加上。
  • Scanner输入的换行坑:如果之前用了nextInt()之类的方法,记得要额外调用一次scanner.nextLine()吃掉换行符,否则会跳过后续的nextLine()输入。上面的示例全程用nextLine(),避免了这个问题。
  • 泛型使用错误:如果直接写ArrayList courses(不带泛型),虽然能运行,但会有警告,而且后续处理数据时需要强制类型转换,非常不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 09:20:20