2010-11-18 24 views
1

私はいくつかの問題があります ロックのためのプログラムを構築する ロック。ロックの組み合わせ

私が印刷されたとき、それは次のようになります

をロック小さなロック でロック を構築し、それぞれに組み合わせを割り当てたい:

Lock Combination 
1  8-4 
2  1-2 
3  5-3 
4  10-7 
5  9-6 

私のようなロックのための基本的なコードを構築することができます

public class mainLock { 
    public static void main (String[] args) { 
     System.out.println("Lock" + " " + "Combination"); 

     int lock = 1; 

     while (lock <=5) { 
      System.out.println(" "+lock); 
      lock = lock+1; 
     } 
    } 
} 

問題は、私は1-間 割り当ての組み合わせにしたいということです10ランダム 番号は印刷ビューに表示されているように の2回表示されません。 プログラムを起動するときに、ランダムに2つの一意の数字で5つのロックの組み合わせを 作成する必要があります。

が、私はこれを作るために、私はおそらく この

(int)(Math.random()*10)+1 

のような方法で、ランダムまたはMath.random()を使用する必要があることを知っている私は、私は2つの異なるため メソッドを作成するクラスを作成考えます各 ための櫛は、私の乱数 を作成ではなく、必ずどのように 、どのように各ロックに割り当てるイムする

public class Combination { 
    public int getComb() { 
     int comb1, comb2; 

     comb1 = (int)(Math.random()*5)+1; 
     comb2 = (int)(Math.random()*5)+1; 

をロックします。

ヘルプが非常にうまくいくでしょう!

+0

この宿題はありますか?もしそうなら、そのようにタグを付けます。 –

+0

これは宿題でなければなりませんが、あなたが試したことと出会う場所を教えてくれました。あなたはそれぞれのロックの組み合わせを保持するためにsomethign必要があります。だから、おそらくこれを行うにはいくつかのオブジェクトが必要です。したがって、ロッククラスが必要な場合は、 –

+0

のインスタンスを作成することができます。回答が役に立ちましたら、正しいものとして選択してください。それ以外の場合は、私たちが詳しく説明することができない理由を教えてください。 –

答えて

1

数字を含むリストを作成し、次にそれを並べ替えるためにCollections.shuffle()を使用してみてください。これは、数字を繰り返さずに探しているランダム化された動作を提供します。私はこれをテストしていませんが、それはうまくいくはずです:

ArrayList<Integer> digits = new ArrayList<Integer>(); 

for (int i = 1; i < 11; i++) { 
    digits.add(Integer.valueOf(i)); 
} 

Collections.shuffle(digits): 

数字だけリストから数字を読み取ることができます。

+0

繰り返しのない「ランダム」数に適したソリューションです。 @ジェスパー、あなたは "ランダムな"数字を必要とするが、有効な値に制約を適用する問題がある場合、それは真の乱数解を探していないことを示す最初の良い兆候です。 (あるいは少なくともPRNGが提供することができるようなランダムな解決策) –

0

これは宿題なので、まだそのコースでは説明していないテクニックを使用するのは賢明ではないかもしれません。基本的な方法だけを使用すると、組み合わせの各値を個別に保持する配列を作成できます。組み合わせの乱数を作成するたびに、配列のすべての値と照合します。一意の場合は、組み合わせのその部分の値として設定します。一意でない場合は、別の「ランダム」番号を提示してください。これはもっとも洗練されたソリューションではないかもしれませんが、少なくとも、あなたのプログラミングの授業のレベルの周りに私が推測している方法でメソッドを使用します。