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(methodnextLine()
),一些关于变量和作用域的一般信息,你正在做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);