2017-11-27 4 views
-3

私は宝くじ機を作ろうとしています。今のところ私はランダムに生成されたarraylistsを2つ作った。 1つは「勝利ライン」(1〜40の7つの数字)で、もう1つは「推測」です。私は複数のランダムな "推測"ラインを作成できるようにしたい、私はそれをforループでやった。今私の問題は、これらの2人のアーラリストを比較したいということです。そして、もし私が7丁も正しく得るだけでなく、4,5,6の数字が正しいならば。私はかなり長い間ここにこだまれており、何をすべきかを本当に分かりません。抽選機をarraylistsを比較するJava

arraylistsが100%同じだと比較しようとしましたが、毎回同じだと言います。私は問題は、実際にランダムにシャッフルされた最初の7つの数字の代わりに、全体のarraylistを実際に返すということかもしれないと思います。何かアドバイス?また、私はarraylistの代わりにハッシュセットのような何かを使用する必要があります。私のコメントで述べたように

package randomlotto; 

import java.util.*; 

public class RandomLotto { 

public static void main(String[] args) { 

    ArrayList<Integer> pelatutRivit = arvoRivit(); 
    ArrayList<Integer> oikeaRivi = oikeaRivi(); 
} 

private static ArrayList<Integer> arvoRivit(){ // here we generate the 
               // "guess" lines of numbers 

System.out.println("Arvotut rivit ovat: "); 
ArrayList<Integer> arvRivi = new ArrayList<Integer>(); 
for(int i = 0; i < 40; i++) 
{ 
arvRivi.add(i+1);      // creating an arraylist 1-40 
} 

for(int x=0; x<10; x++){    // looping the "guess" lines for 
             // x amount of times 

Collections.shuffle(arvRivi);   // shuffling and getting the first 
             // 7 values 
System.out.println("---"); 
for(int j =0; j < 7; j++) 
{ 
    System.out.println(arvRivi.get(j) + " "); 
} 
} 
return (arvRivi); 
} 

private static ArrayList<Integer> oikeaRivi(){ // here we generate the 
               // "right" line of numbers 

ArrayList<Integer> oikRivi = new ArrayList<Integer>(); 
for(int i = 0; i < 40; i++) 
{ 
oikRivi.add(i+1); 
} 

Collections.shuffle(oikRivi); 
System.out.println("OIKEA RIVI ON:"); 
for(int j =0; j < 7; j++) 
{ 
    System.out.println(oikRivi.get(j) + " "); 
} 
return (oikRivi); 
} 

} 
+0

こんにちは!スタックオーバーフローは、デバッグの助けを得るための素晴らしい場所ではありません。私はあなたのロジックを簡単な英語で書くことをお勧めします。そして、それはあなたが書いたコードと一致するかどうかを確認してください。 –

+0

乱数を画面に印刷して番号を再シャッフルするのではなく、データ構造に乱数を格納することを検討する必要があります。乱数をデータ構造体に保存したら、それらをループして、その値が当選番号配列に含まれているかどうかをチェックすることができます。 – forgetaboutme

+0

ねえ、私はそのようなことをすることを考えていましたが、私はそれについてどうやって進むべきかについてはあまりよく分かりません...もっと感謝します。 @私を気にかけないでください – nyffe

答えて

0

、あなたは整数の無作為化ArrayList Sを作成し、あなたの「oikeaRivi」ArrayListでこれらの値を見つけることができるかどうか確認する必要があります。

この方法は、あなたが発見されたどのように多くの数字をチェックすることができます:

private static int howManyNumbers(ArrayList<Integer> guesses, ArrayList<Integer> answers) { 

    int nbOfRightGuesses = 0; 
    for(int guess : guesses) { 
     if(answers.contains(guess)) { 
      nbOfRightGuesses++; 
     } 
    } 

    return nbOfRightGuesses; 
}