Java 不在ArrayList中的对象

Java 不在ArrayList中的对象,java,Java,我正在写一个程序,应该允许用户进入学校的课程。然而,有几个问题 首先,出于某种原因,我不能让它用一个以上的单词来形容课程。如果输入两个单词,则抛出一个错误 其次,它不是“永久”地将这些类添加到arraylist中吗 下面是它的工作原理: 请从以下选项中选择: 加一道菜 将学生添加到课程中 查看可用课程 退出系统 这不是存储到一个文件,所以我不知道如何在内存中保存课程。不管怎样,这是我得到的 if(userChoice==1) { System.out.prin

我正在写一个程序,应该允许用户进入学校的课程。然而,有几个问题

  • 首先,出于某种原因,我不能让它用一个以上的单词来形容课程。如果输入两个单词,则抛出一个错误
  • 其次,它不是“永久”地将这些类添加到arraylist中吗
下面是它的工作原理:

请从以下选项中选择:

  • 加一道菜
  • 将学生添加到课程中
  • 查看可用课程
  • 退出系统
  • 这不是存储到一个文件,所以我不知道如何在内存中保存课程。不管怎样,这是我得到的

        if(userChoice==1)
        {
            System.out.println("Enter the Course Number: ");
            int courseNum=scan.nextInt();
            System.out.println("Enter the Course Title: ");
            String courseTitle=scan.next();
            System.out.println("Enter the Max Number Allowed Students: ");
            int courseMaxSize = scan.nextInt();
            System.out.println("Course Number is "+courseNum);
            System.out.println("Course Title is "+courseTitle);
            System.out.println("Max Number of Students is "+courseMaxSize);
            SchoolClass nc = new SchoolClass(courseNum,courseTitle,courseMaxSize);
            ArrayList<SchoolClass> courseArr=new ArrayList<SchoolClass>();
            courseArr.add(nc);
            System.out.println(courseArr.get(0).getCourseTitle()+" "+courseArr.get(0).getCourseNumber()+" "+courseArr.get(0).getMaxStudents());
            System.out.println(courseArr.size());
    
    显然,我还没有为选项2、3、4编写代码。只是想寻求一些帮助,让我继续前进。

    ArrayList Coursear=new ArrayList();
    
    ArrayList<SchoolClass> courseArr=new ArrayList<SchoolClass>();
    if(userChoice==1)
        {
            System.out.println("Enter the Course Number: ");
            int courseNum=scan.nextInt();
            System.out.println("Enter the Course Title: ");
            String courseTitle=scan.nextLine();
            System.out.println("Enter the Max Number Allowed Students: ");
            int courseMaxSize = scan.nextInt();
            System.out.println("Course Number is "+courseNum);
            System.out.println("Course Title is "+courseTitle);
            System.out.println("Max Number of Students is "+courseMaxSize);
            SchoolClass nc = new SchoolClass(courseNum,courseTitle,courseMaxSize);
    
            courseArr.add(nc);
            System.out.println(courseArr.get(0).getCourseTitle()+" "+courseArr.get(0).getCourseNumber()+" "+courseArr.get(0).getMaxStudents());
            System.out.println(courseArr.size());
    
    if(userChoice==1) { System.out.println(“输入课程号:”); int courseNum=scan.nextInt(); System.out.println(“输入课程名称:”); 字符串courseTitle=scan.nextLine(); System.out.println(“输入允许的最大学生人数:”); int courseMaxSize=scan.nextInt(); System.out.println(“课程编号为”+courseNum); System.out.println(“课程名称为”+CourseTile); System.out.println(“最大学生人数为”+courseMaxSize); SchoolClass nc=新的SchoolClass(courseNum、CourseTile、courseMaxSize); courseArr.add(nc); System.out.println(courserr.get(0.GetCourseTile()+“”+courserr.get(0.getCourseNumber()+“”+courserr.get(0.getMaxStudents()); System.out.println(courserr.size());
    首先,出于某种原因,我不能让它用一个以上的单词来形容课程

    这是因为您的代码:

        System.out.println("Enter the Course Title: ");
        String courseTitle = scan.next();
    
    它应该是
    scan.nextLine()

    扫描器使用定界符模式将其输入拆分为标记,默认情况下,定界符模式匹配空白

    抢到一个代币

    其次,它不是“永久”地将这些类添加到arraylist中吗

    这是因为您的列表是在
    if
    分支中创建的:

    if (userChoice == 1) {
        // ....
        ArrayList<SchoolClass> courseArr = new ArrayList<SchoolClass>();
        courseArr.add(nc);
        // ...
    }
    // "courseArr" does not exist anymore here
    
    if(userChoice==1){
    // ....
    ArrayList CoursArr=新的ArrayList();
    courseArr.add(nc);
    // ...
    }
    //“Coursear”在这里已经不存在了
    

    您必须从这个
    if
    分支中创建列表(也可能是从封闭循环中创建,它抓住了用户的选择)。

    创建
    SchoolClass
    对象

     SchoolClass sc=new SchoolClass ();
    
    根据输入设置值

     sc.setcourseNumber(2);
     sc.setCourseTitle("Maths");
     sc.setMaxStudents(3);
    
    然后创建
    ArrayList

     ArrayList<SchoolClass> list=new ArrayList<>();
    

    阅读:
    Scanner
    javadoc(method
    nextLine()
    ),一些关于变量和作用域的一般信息,你正在做
    ArrayList coursorr=new ArrayList();
    每次用户输入1,之前的ArrayList就会被覆盖。我想这就是你在“不是永久添加这些类”中所要求的。阅读变量范围。您正在对
    if
    语句中的每个循环(我猜)创建一个新的本地
    ArrayList
    ,当您离开
    if
    语句时,该循环基本上开始解引用。这是OP(通常)正在做的事情,不会修复其基础问题。如果我放置nextLine()这里:不要把它放在评论中,编辑你的问题——同时更新你的代码,我想你已经解决了列表问题,对吗?输入课程号:23输入课程名称:输入允许的最大人数学生:6课程编号是23课程名称是最大人数学生是6 23 6 1
     ArrayList<SchoolClass> list=new ArrayList<>();
    
     list.add(sc);