Deshalb die Aufgabe ganz unabhängig vom Programmieren erstmal "von Hand" lösenLeider keine Ahnung hab gerade erst Angefangen zu programmieren und das ist eine unsere Hausaufgaben und ich hab keinen plan wie das gehen soll
Man muss aber schon zwanghaft bemüht sein, die Aufgabe irgendwie möglichst kreativ auszulegen, um auf solche Ideen zu kommenDie Frage lässt aber auch Interpretationsspielraum: gilt z.B. die Folge 3333 als doppelt (da die 3 vierfach erscheint) ? Müssen die Zahlen zwingend aufeinander folgen oder reicht irgendwo im Zielstring ?
Das ist richtig, aber die spontan einfachste Interpretation vonDie Frage lässt aber auch Interpretationsspielraum
wäre ein Array von Integerwerten.doppelte Zahlen in einem array
List<String> meineListe = new ArrayList<String>();
// Diese Liste muss nun irgendwie gefüllt werden. Ich habe das in diesem Beispiel weggelassen.
if (meineListe.size() == 0) {
System.out.println("Die Liste ist leer.");
return;
}
// Ein Set enthält keine Duplikate.
Set<String> meinSet = new HashSet<String>();
for (int i = 0; i < meineListe.size(); i++) {
meinSet.add(meineListe.get(i));
}
if (meineListe.size() == meinSet.size()) {
System.out.println("Jedes kommt nur einmal vor.");
return;
} else {
System.out.println("Es gibt Doppelte:\n");
Hashtable<String, Integer> zuordnung_String_AnzahlWieOftErVorkommt = new Hashtable<String, Integer>();
for (String s : meinSet) {
int anzahlWieOftEsVorkommt = 0;
for (int k = 0; k < meineListe.size(); k++) {
if (s.equalsIgnoreCase(meineListe.get(k))) {
anzahlWieOftEsVorkommt++;
}
}
zuordnung_String_AnzahlWieOftErVorkommt.put(s, anzahlWieOftEsVorkommt);
}
for (Map.Entry<String, Integer> entry : zuordnung_String_AnzahlWieOftErVorkommt.entrySet()) {
String key = entry.getKey();
int value = entry.getValue();
if (value > 1) {
System.out.println(key + "; " + value);
}
}
Ist ja bei der HashMap auch nicht anders was die Speicherung / das finden der keys angeht. Du gehst nun einmal die Liste der Elemente mehrfach durch und damit hast Du ein schlechtes Laufzeitverhalten.Er sagte, dass er sie auch auslesen lassen will.
---
Achso, bei Set ist die Abfrage sehr schnell.
Das passiert, wenn man im Browser einen Remote Desktop hat, in dem dann ein Browser ist ...https://server.kneitzel.de:1443/software/html5.html
Es erscheint eine Loginmaske.
public class DoppelteZahleninArray {
public static void main(String[] args) {
Random random = new Random();
int[] array = new int[50];
int[] even;
int[] doubleNum;
int count = 0;
int doubles = 0;
for (int i = 0; i < array.length; i++) {
array[i] = random.nextInt(200);
System.out.println(array[i] + " ");
}
for (int j = 0; j < array.length; j++) {
even = new int[array.length];
if (array[j] % 2 == 0) {
even[count] = array[j];
count++;
}
for (int k = 0; k < array.length; k++) {
doubleNum = new int[array.length];
if (array[j] / 2 == array[k]) {
even[doubles] = k;
doubles++;
System.out.println(even[doubles]);
}
}
}
System.out.println(count);
}
}
Das sieht etwas wild aus. Hier noch mal etwas übersichtlicher:Das wäre eine Lösung:
final Random random = new Random();
final int[] array = random.ints(30, 0, 30).toArray();
System.out.println(String.format("Array mit Zufallswerten:\n%s\n", Arrays.toString(array)));
Arrays.sort(array);
int count = 1;
int value = array[0];
for (int i = 1; i < array.length; i++) {
if (value == array[i]) {
count++;
} else {
System.out.println(String.format(
"Der Wert \u001b[31m%1$2s\u001b[0m ist \u001b[34m%2$2s\u001b[0m mal vorhanden.",
value, count));
count = 1;
}
value = array[i];
}
Der Wert 6 ist 2 mal vorhanden.
Der Wert 7 ist 3 mal vorhanden.
Der Wert 8 ist 1 mal vorhanden.
Der Wert 11 ist 2 mal vorhanden.
Der Wert 12 ist 1 mal vorhanden.
Der Wert 13 ist 1 mal vorhanden.
Der Wert 14 ist 2 mal vorhanden.
Der Wert 15 ist 1 mal vorhanden.
Der Wert 16 ist 2 mal vorhanden.
Der Wert 18 ist 1 mal vorhanden.
Der Wert 20 ist 1 mal vorhanden.
Der Wert 21 ist 2 mal vorhanden.
Der Wert 23 ist 2 mal vorhanden.
Der Wert 24 ist 2 mal vorhanden.
Der Wert 25 ist 1 mal vorhanden.
Der Wert 26 ist 2 mal vorhanden.
Der Wert 27 ist 1 mal vorhanden.
Der Wert 28 ist 1 mal vorhanden.