我目前正在进行多课程作业,我必须根据程序中是否存在先决条件来添加课程。 我使用hashmap将我的课程存储在程序类中。 (我想我会派上用场)但是,我确保这些preReq存在时遇到了一些麻烦。 这是我目前正在进行的一些代码
public boolean checkForCourseFeasiblity(AbstractCourse c) throws ProgramException
{
AbstractCourse[] tempArray = new AbstractCourse[0];
tempArray= courses.keySet().toArray(tempArray);
String[] preReqsArray = new String[1];
preReqsArray = c.getPreReqs();
//gets all course values and stores them in tempArray
for(int i = 0; i < preReqsArray.length; i++)
{
if(courses.containsKey(preReqsArray[i]))
{
continue;
}
else if (!courses.containsKey(preReqsArray[i]))
{
throw new ProgramException("preReqs do not exist"); //?
}
}
return true;
}
基本上,tempArray将所有keySet存储在课程hashmap中,我需要将它们与preReqs(这是一个字符串数组)进行比较。如果preReqs存在于键集中,则添加课程,如果他们不添加课程。如果课程通过我添加异常,则返回true。请记住我的键集是字符串,例如键集值可以是“Programming1”,并且课程所需的先决条件可以是“programming1”。如果是这种情况,则添加课程,因为keyset中存在prereq课程。
我相信我的错误是当我用c.getPreReqs初始化mypreReqsArray时(注意:getPreReqs是一个带有返回类型String []的getter)。
如果有人可以帮助我解决我的困境,那真的很棒。香港专业教育学院试图提供尽可能多的,我觉得我在过去的3个小时里一直四处走动:(
- 谢谢你。
答案 0 :(得分:0)
尝试这样的事情,你不需要tempArray。 “for each”循环看起来也更好。如果你想抛出一个异常,我会把这个逻辑放在调用这个方法的地方。
public boolean checkForCourseFeasiblity(AbstractCourse c)
{
for(String each : c.getPreReqs())
{
if(! courses.containsKey(each))
{
return false;
}
}
return true;
}