2016-05-31 11 views
0

私のプログラムはQuestionBank.sqlファイルから質問の詳細を読み取ります。すべてが正しいですが、12の質問を得る代わりに、出力に10の質問が含まれています。hashcodeとequalsメソッドをオーバーライドして固有の質問を生成する方法

出力は次のとおりです。シンプル
GKミディアム
GKコンプレックス
科学コンプレックス
歴史ミディアム
歴史ミディアム
歴史シンプル
履歴シンプル

GKシンプル
GK
地理中

**DataManagerImpl.java** 

@Override 
    public Set<Question> generateQuestionPaper(List<Question> list, 
      List<Criteria> template) { 
     // TODO Auto-generated method stub 
     Set<Question> questionSet = new HashSet<Question>(); 
     int count; 
     int index = 0; 
     for(Criteria c: template){ 
      count = 0; 
      while(c.getNoOfQuestion() > count){ 
       index = (int)(Math.random()*list.size()); 
       //System.out.println(index); 
       Question q = list.get(index); 
       if(c.getCategory().equals(q.getCategory()) && c.getComplexity().equals(q.getComplexity())){ 
        if(!questionSet.contains(q)){ 
         count++; 
         questionSet.add(q); 
         System.out.println(q.getCategory()+" "+q.getComplexity()); 
        } 

       }     
      } 
     } 
     return questionSet; 
    } 

Criteria.java

public class Criteria { 

private Category category; 
private Complexity complexity; 
private int noOfQuestion; 

public Criteria() { 
} 

public Criteria(Category category, Complexity complexity,int noOfQuestion) { 
    super(); 
    this.noOfQuestion = noOfQuestion; 
    this.category = category; 
    this.complexity = complexity; 
} 

public int getNoOfQuestion() { 
    return noOfQuestion; 
} 

public void setNoOfQuestion(int noOfQuestion) { 
    this.noOfQuestion = noOfQuestion; 
} 

public Category getCategory() { 
    return category; 
} 

public void setCategory(Category category) { 
    this.category = category; 
} 

public Complexity getComplexity() { 
    return complexity; 
} 

public void setComplexity(Complexity complexity) { 
    this.complexity = complexity; 
} 

}

リストテンプレートが含まれています( enter image description here

generateQuestionpaper()にパラメータとして渡さ

私を助けてください!

+0

「Question」ハッシュコード/ equalsの実装が重要であるようですが、そのコードを入力してください。 – weston

+0

私はこれら2つの方法が私の問題を解決する方法を理解できないので、私はhashcodeとequalsメソッドをオーバーライドしていませんか? –

答えて

0

問題はMath.random()メソッドの定義にあります。リストインデックスも、これが正常に動作する必要がありますベースのゼロ

Random random = new Random(); 
for(Criteria c: template){ 
     count = 0; 
     while(c.getNoOfQuestion() > count){ 
      index = random.nextInt(list.size()); 

としては、 - 以下のようにコードを変更した後

してみてください。

+0

私は試しましたが、以前と同じ出力が得られます。 –

関連する問題