2010-11-18 15 views
1

Ich habe einige Probleme Aufbau eines Programms für eine Kombination Sperre.Lock-Kombination

Ich möchte eine Sperre mit kleinen Schleusen bauen und ordnen Kombination mit jedem sperren

Es sollte wie folgt aussehen, wenn sie gedruckt:

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

Kann ich den grundlegenden Code für das Schloss bauen wie

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; 
     } 
    } 
} 

das Problem ist, dass ich zu assign Kombination wollen zwischen 1- 10 Random und die Nummer sollte nicht zweimal erscheinen wie Sie in der Druckansicht sehen können. also, wenn Sie das Programm starten, sollte es zufällig Kombination für 5 Schlösser mit 2 eindeutigen Ziffern erstellen.

Ich weiß, dass dies für die Herstellung ich wahrscheinlich brauchen Zufall zu verwenden oder Math.random() in einer Art und Weise wie diese

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

denken, dass ich eine Klasse erstellen, wo ich eine Methode für die 2 verschiedene erstellen Kamm für jede sperren

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

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

meine Zufallszahlen zu schaffen, aber nicht sicher, wie und wie im, zu jedem Schloss zuzuweisen.

Hilfe wäre sehr geschätzt!

+0

Ist das Hausaufgaben? Wenn ja, markieren Sie es als solches. –

+0

Das müssen Hausaufgaben sein, aber du hast uns gesagt, was du versucht hast und wo du feststeckst - gut gemacht, die meisten Leute nicht. Sie brauchen etwas, um die Kombination jedes Schlosses zu halten. Also brauchst du wahrscheinlich ein paar Objekte dafür. Sie benötigen also eine Lock-Klasse, in der Sie Instanzen von –

+0

erstellen können. Wenn eine Antwort hilfreich für Sie war, wählen Sie sie bitte als die richtige aus. Ansonsten lassen Sie uns wissen, warum es nicht so war, dass wir es ausarbeiten können. –

Antwort

1

Sie könnten versuchen, eine Liste mit den Ziffern zu erstellen und dann Collections.shuffle() zu verwenden, um sie neu anzuordnen. Das würde Ihnen das zufällige Verhalten geben, nach dem Sie suchen, ohne Ziffern zu wiederholen. Ich habe nicht getestet, aber es sollte funktionieren:

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

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

Collections.shuffle(digits): 

Dann können Sie nur die Ziffern aus der Ziffern Liste lesen.

+0

Gute Lösung für die sich nicht wiederholenden "zufälligen" Zahlen. @Jesper, wenn Sie ein Problem haben, das "zufällige" Zahlen erfordert, aber Einschränkungen für gültige Werte anwendet, ist dies ein guter erster Hinweis darauf, dass Sie nicht nach einer echten Zufallszahlenlösung suchen. (oder zumindest so zufällig eine Lösung wie ein PRNG bieten kann) –

0

Da es sich um Hausaufgaben handelt, ist es vielleicht nicht klug, Techniken zu verwenden, die Sie in diesem Kurs noch nicht besprochen haben. Wenn Sie nur einfache Methoden verwenden, können Sie versuchen, ein Array zu erstellen, in dem jeder Wert der Kombinationen einzeln gespeichert wird. Erstellen Sie nach jeder Erstellung einer Zufallszahl für die Kombination einen Vergleich mit allen Werten im Array. Wenn es eindeutig ist, legen Sie es als Wert für diesen Teil der Kombination fest. Wenn es nicht eindeutig ist, erstelle eine andere "zufällige" Nummer. Dies ist vielleicht nicht die eleganteste Lösung, aber zumindest verwendet es Methoden, die, wie ich vermute, in der Programmiersprache liegen.