0

私は現在、複数のクラスの割り当てに取り組んでおり、プログラム内に前提条件が存在するかどうかに基づいてコースを追加する必要があります。ハッシュマップを使用してプログラムクラス内にコースを保存します。(私は便利だと思いました)しかし、これらの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を格納しているので、それらすべてをpreReqs(文字列の配列)と比較する必要があります。preReqがキーセット内に存在する場合は、コースを追加します。存在しない場合は、コースを追加します。コースが例外を追加した場合はtrueを返します。私のキーセットは文字列であることに注意してください。たとえば、キーセットの値は「Programming1」であり、コースに必要な前提条件は「programming1」である可能性があります。この場合、追加し、キーセットに前提条件コースが存在するため、コースを追加します。mypreReqsArrayをc.getPreReqsで初期化したときのエラーだと思います(注:getPreReqsは戻り型String []のゲッターです)。誰かが私のジレンマで私を助けてくれるなら、それは本当に素晴らしいことです。iveは可能な限り提供しようとしましたが、

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 に答える