没有停留在ArrayList中的对象

时间:2013-07-11 05:29:30

标签: java

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

  • 首先,由于某种原因,我不能让它为课程标题取一个以上的单词。如果输入两个单词,则会引发错误。
  • 其次,它不是“永久地”将这些类添加到arraylist中?

这是它应该如何工作:

  

请从以下选项中进行选择:

     
      
  1. 添加课程
  2.   
  3. 将学生添加到课程
  4.   
  5. 查看可用课程
  6.   
  7. 退出系统
  8.   

这不会存储到文件中,因此我不确定如何将课程保存在内存中。无论如何,这就是我所拥有的。

    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());

我的SchoolClass课程如下:

int courseNumber,maxPeers;
String course="";
public SchoolClass(int courseNum, String courseTitle, int maxStudents)
{
    courseNumber=courseNum;
    course=courseTitle;
    maxPeers=maxStudents;
}
public int getCourseNumber()
{
    return courseNumber;
}
public int getMaxStudents()
{
    return maxPeers;
}
public String getCourseTitle()
{
    return course;
}

我还没有为选项2,3,4编写代码。只是寻找一点帮助让我继续前进。

3 个答案:

答案 0 :(得分:5)

  

首先,由于某种原因,我不能让它为课程标题取一个以上的单词。

这是因为你的代码确实:

    System.out.println("Enter the Course Title: ");
    String courseTitle = scan.next();

应该是scan.nextLine()documentation for Scanner说:

  

扫描程序使用分隔符模式将其输入分解为标记,分隔符模式默认匹配空格。

.next()抓住一个令牌。

  

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

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

if (userChoice == 1) {
    // ....
    ArrayList<SchoolClass> courseArr = new ArrayList<SchoolClass>();
    courseArr.add(nc);
    // ...
}
// "courseArr" does not exist anymore here

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

答案 1 :(得分:0)

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());

答案 2 :(得分:0)

创建SchoolClass对象

 SchoolClass sc=new SchoolClass ();

从输入中设置值。

 sc.setcourseNumber(2);
 sc.setCourseTitle("Maths");
 sc.setMaxStudents(3);

然后创建您的ArrayList

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

现在设置列表值

 list.add(sc);