Ich versuche ein "2-dimensionales" Array in Java zu erstellen, das sich mit Zufallszahlen zwischen 1 und 6 füllt (EDIT: Ich meinte 0 und 5, wie der Code tut derzeit - ich entschuldige mich). Ich möchte jedoch, dass die Zahlen über eine imaginäre Linie der besten Anpassung "gespiegelt" werden, so als ob es sich um ein Diagramm handelt. Zum Beispiel, wenn die Zahl bei Indizes [1] [4] 3,0 ist, möchte ich, dass die Zahl bei [4] [1] auch 3,0 ist. Der Code-Schnipsel habe ich zur Zeit, dass Angebote mit diesem unten ist, für das, was ihren Wert (ich habe array.length als 6 an einer anderen Stelle im Code festgelegt):'Spiegeln' eines zweidimensionalen Arrays [Java]
Random random = new Random();
int n = array.length;
double [][] populationArray = new double [n][n];
for (int i=0; i<populationArray.length; i++){
for (int j=0; j<populationArray[i].length; j++) {
populationArray[i][j] = random.nextInt(6);
if (populationArray[i][j] != 0) {
populationArray[j][i] = populationArray[i][j];
}
}
}
for (double[] p : populationArray) {
System.out.println(Arrays.toString(p));
}
Die derzeit druckt als:
[0.0, 1.0, 2.0, 1.0, 5.0, 2.0]
[1.0, 3.0, 5.0, 1.0, 3.0, 1.0]
[2.0, 5.0, 4.0, 1.0, 4.0, 1.0]
[1.0, 1.0, 1.0, 4.0, 2.0, 2.0]
[5.0, 3.0, 0.0, 2.0, 4.0, 4.0]
[2.0, 1.0, 0.0, 0.0, 4.0, 1.0]
Wie Sie sehen können einige der Zahlen reflektieren und einige nicht (ich vermute, diejenigen, die tun, sind Pech), und ich habe mit der Logik dieser zu kämpfen. Ich würde mich über alle Vorschläge freuen - wenn dies irgendwo anders angesprochen wurde, würde ich auch einen Link nehmen, da ich es selbst nicht finden konnte.
Vielen Dank.
'if (populationArray [i] [j]! = 0) scheint Ihr Problem zu sein. Es ist im Wesentlichen zufällig, ob es reflektiert oder nicht. Außerdem überschreiben Sie zuvor reflektierte Werte mit Zufallszahlen. –
Abgesehen von der 0.0 Werte-Array ist tatsächlich gespiegelt, wie Sie sagen, es sollte sein. Entfernen Sie die if-Bedingung und es sollte gut funktionieren. – reden
Ihre Schleifen decken * alle * Positionen in Ihrem Array ab, aber sie sollten nur * die Hälfte * aller Array-Positionen abdecken. –