0

我目前正在做一个多班作业,我必须根据程序中是否存在先决条件来添加一门课程。我使用哈希图将我的课程存储在程序类中。(以为我会派上用场)但是,我在确保这些 preReqs 存在时遇到了一些麻烦。这是我目前正在执行的一些代码

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 存储在课程哈希图中,我需要将它们与 preReqs (这是一个字符串数组)进行比较。如果密钥集中存在 preReqs,则添加课程,如果他们不添加课程。如果课程通过我添加了异常,则返回 true。请记住,我的键集是字符串,例如键集值可以是“Programming1”,而课程所需的先决条件可能是“programming1”。如果是这种情况,请添加课程,因为密钥集中存在 prereq 课程。我相信我的错误是当我用 c.getPreReqs 初始化 mypreReqsArray 时(注意:getPreReqs 是一个返回类型为 String[] 的 getter)。如果有人能帮助我解决我的困境,那就太好了。我试图提供尽可能多的东西,

4

1 回答 1

0

尝试这样的事情,你不需要 tempArray。“for each”循环看起来也更好。如果您想抛出异常,我会将该逻辑放在调用此方法的位置。

public boolean checkForCourseFeasiblity(AbstractCourse c)
{

  for(String each : c.getPreReqs())
  {
      if(! courses.containsKey(each)) 
      {
          return false;
      }
  }

  return true;
}
于 2012-08-31T08:59:53.527 回答