2016-04-18 8 views
-1

私は、0から364までの乱数のデータセットを取り、実行中のパーセンテージを調べるプロジェクトを完成させようとしています(このメソッドは、セットと実行回数)に重複した番号があります。以下は初級メソッドのガイダンスを探しています

は、私がこれまで持っているものですが、私は本当に私がエラーを取得しておくと、これを行う方法を見つけ出すのに苦労しています:

public double calculate(int size, int count) { 

    double percentage; 
    int matches = 0; 
    int check; 
    int i = 0; 
    int add = 0; 
    Random rnd = new Random(); 

    List<Integer> birthdays = new ArrayList<>(); 

    for (int k = 1; k <= count; k++){ 
     rnd.setSeed(k); 
     do{ 
      add = rnd.nextInt(365); 
      birthdays.add(add); 
      i++; 
     }while (i < size-1); 
     //birthdays.add(rnd.nextInt()); 
     for (int j = 0; j <= size-1; j++) { 
      check = birthdays.get(j); 
      if (birthdays.indexOf(check) != birthdays.lastIndexOf(check)) { 
       matches++; 
       j = size; 
      } 
     } 
     } 

    percentage = (double)matches/count * 100; 

    //percentage = 8; 

    return percentage; 
} 
+1

どのようなエラーが表示されますか? –

+0

OutofBoundsException –

+0

質問に答えることに関しても私が何をしているのか分かりません。どんな助けもありがたいです –

答えて

0

ここにあなたのコードで問題のカップルがあります。一つは、何もしていないように見える最初のforループの直後のwhileループです。それは言う:

これは、あなたにエラーを与えているかもしれないが、おそらくあなたの2番目のループから話すエラーです。

for (int j = 0; j <= size-1; j++) 

が、その後、あなたは言う:あなたはそれをインスタンス化するとき、あなたが言う、あなたがそれをインスタンス化するときに、J < =サイズ-1が、その後、あなたがJを設定=大きさ、それが与えると言う

j = size; 

ので、エラー。

関連する問題