Ja, bzw. alle möglichen Zustände einmal aufschreiben um diese dann direkt im Code abzufragen.Mit manuell meint er, dass Du einen Zettel und einen Stift in die Hand (lat. manus, daher manuell) nehmen sollst.
Danke, sehr schön. Das macht es dann auch sehr anschaulich denke ich mal und man erkennt gut, wie das in Code aussehen würde.Wenn schon Baum dann "schön"
if (array[0] == array[1] && array[1] == array[2]) {
System.out.println("3");
}
else if (array[0] == array[1] || array[0] == array[2] || array[1] == array[2]){
System.out.println("2");
}
else {
System.out.println("0");
}
int zahl =0;
int zaehler = 1;
boolean status = false;
int[] array = {2,4,16,45,44,33,12,8,8, 6, 24,24,24,5};
Arrays.sort(array);
for (int i = 0; i < array.length -1; i++) {
if (array[i] == array[i+1]) {
zaehler++;
zahl = array[i];
status = true;
}
else {
if (status == true) {
listzahl.add(zahl);
listanzahl.add(zaehler);
status = false;
zaehler =1;
}
}
}
for (int i : listzahl) {
System.out.println(i);
}
for (int i : listanzahl) {
System.out.println(i);
}
In diesem Fall (mit den drei Elementen im Array) brauchst Du nichts sortieren.Ich habe es jetzt mal mit einen Array gemacht, erst angelegt dann sortiert und wie im Code verglichen.
Nein, so wie Du das gezeigt hast nicht. Wenn die Elemente im Array sortiert sind, dann kannst Du einfach durch das Array iterieren und den aktuellen Wert mit dem Nachfolger vergleichen. So lange die gleich sind, zählst Du hoch. Ansonsten gibst du das aktuelle Element und den aktuellen Zähler aus und setzt den Zähler anschließend auf 1 zurück.Würde das auch so mit mehreren funktionieren?
Also so wie mein Beispiel im #13?Den Code überlasse ich Dir.
- Zähler mit 1 initialisieren, wir beginnen nun mit dem ersten Element.
- Das aktuelle Element ist eine 5, das nächste Element existiert und ist ebenfalls eine 5, Zähler erhöhen auf 2. Weiter mit dem nächsten Element
- Das aktuelle Element ist eine 5, das nächste Element existiert und ist ebenfalls eine 5, Zähler erhöhen auf 3. Weiter mit dem nächsten Element
- Das aktuelle Element ist eine 5, das nächste Element existiert und ist eine 8, also von 5 verschieden. Ausgabe des aktuellen Elements und des Zählers, z. B. "5 3-mal", Zähler auf 1 setzen, weiter mit dem nächsten Element
- Das aktuelle Element ist eine 8, es gibt kein weiteres Element, Ausgabe des aktuellen Elements und des Zählers, z. b. "8 1-mal".
- Fertig
Sorry, das hatte ich total übersehen. Der Code ist fast richtig, er ist nur etwas zu kompliziert und die letzte(n) Zahl(en) wird/werden unterschlagen. Wenn Du mal die Elemente > 24 aus Deinem array entfernst, dann bekommst Du nur 8, 2-mal, die 24 fehlt.Also so wie mein Beispiel im #13?
int[] arr = {2, 4, 16, 12, 8, 8, 6, 24, 24, 24, 5};
Arrays.sort(arr);
for (int i = 0, zaehler = 1; i < arr.length; i++) {
if (i < arr.length - 1 && arr[i] == arr[i+1]) {
zaehler++;
} else {
if (zaehler > 1) {
System.out.println(arr[i] + ": " + zaehler + "-mal"); // oder zur Liste/Map hinzufügen....
}
zaehler = 1;
}
}
8: 2-mal
24: 3-mal
for (int i = 0; i < array.length -1; i++) {
if (array[i] == array[i+1]) {
if (array[i] == array[i+1]) {
Und wenn diese gleich sind, wird hochgezählt, aber wann wird dann noch ausgegeben/hinzugefügt?wird doch das vorletzte mit dem letzten Element verglichen. Wo ist hier mein Denkfehler?