Wie kann man ein Array mit einmaligen Werten initialisieren, bzw. wie kann man prüfen ob in einem Array ein bestimmter Wert enthalten ist?
Der Methode initialize()
wird ein Array
übergeben, das in einer while-Schleife von vorne
durchlaufen wird. Eine int
-Variable num
,
die außerhalb der Schleife lediglich deklariert wurde, wird
als erstes in der Schleife mit einem Zufallswert initialisiert.
In einer weiteren, inneren Schleife wird das Array bis zum
aktuell zu belegenden Index durchlaufen. Hierbei wird, falls
vorhanden, der bisherige Inhalt des Arrays mit der Zufallszahl
verglichen. Wird ein identischer Wert gefunden, so wird eine
boolsche Hilfsvariable auf true
gesetzt und die
innere Schleife abgebrochen. Die äußere Schleife wird
nun fortgesetzt und die Hilfsvariable überprüft. Ist
sie false
, so kann die Zufallszahl am aktuellen
Index gespeichert und der Index selbst inkrementiert werden. Ist
sie true
, so wird die äußere Schleife bis
zum selben Index mit neuer Zufallszahl nochmals durchlaufen.
import java.util.Arrays;
import java.util.Random;
public class SingleValuesArray {
public static void main(String[] args) {
int[] arr = new int[10];
System.out.println(Arrays.toString(initialize(arr)));
}
private static int[] initialize(int[] arr) {
int num, i = 0;
boolean exists;
Random rand = new Random();
while (i < arr.length) {
num = rand.nextInt(10);
exists = false;
for (int j = 0; j < i; j++) {
if (num == arr[j]) {
exists = true;
break;
}
}
if (!exists) {
arr[i] = num;
++i;
}
}
return arr;
}
}
Wenn Ihnen javabeginners.de gefällt, freue ich mich über eine Spende an diese gemeinnützigen Organisationen.