Ich weiß leider nicht wie ich anfangen sollHast du schon irgendwas versucht oder zumindest irgendwelche Ideen?
Ja, das sind mathematische Probleme, die ich nicht lösen konnte. Da diese höhere Mathematik zu viel für mich ist, suche ich dann immer Lösungen, die ohne auskommen:Da die Länge von Arrays fix ist... müsstest du jetzt die neue Länge des neuen Arrays im Voraus berechnen. Ein ungeheurer mathematischer Spagat.
public static int[] doppelte(int[] werte) {
return Arrays.stream(werte).flatMap(wert -> IntStream.of(wert, wert)).toArray();
}
Aber das greift intern vielleicht auf Listen zurück; ein Werkzeug, das sie vielleicht noch gar nicht kennenich dann immer Lösungen, die ohne auskommen
Unabhängig davon, ob Listen Verwendung finden oder nicht: Da sind ja viele Elemente, die noch weniger bekannt sind (Streams und Lambda Expression würde mir da direkt einfallen). Also definitiv keine Lösung für den TE.Aber das greift intern vielleicht auf Listen zurück; ein Werkzeug, das sie vielleicht noch gar nicht kennen
Zumindest solltest Du im Forum irgendwas liefern, an dem man Deine Gedankengänge halbwegs nachvollziehen kann. Das kann eine Zeichnung sein, ein Algorithmus, Pseudocode, ... spielt alles keine Rolle. Hintergrund ist, dass man Dir hier Hilfe zur Selbsthilfe zukommen lassen will (Du sollst ja in der Lage sein, derlei Probleme selbst zu lösen), d. h. man muss erst einmal sehen, wo es hakt.Ich weiß leider nicht wie ich anfangen soll
Anfang:
[CODE lang="java" highlight="2"] public static int[] doppelte(int[] werte) {
int[] werte_b = new int werte_b [];
for (int i = 0; i < werte_b.length; i += 2) {
werte_b = werte[i / 2];
werte_b[i + 1] = werte[i / 2];
}
return werte_b;
}
public static void main(String[] args) {
System.out.println(Arrays.toString(doppelte(new int[] { 1, 2, 3 })));
}[/CODE]
2 * i (gerade Index)
respektive 2 * i + 1 (ungerader Index)
berechnen.public static int[] doppelte(int[] werte) {
Objects.requireNonNull(werte, "werte sind null");
int[] doubled = new int[werte.length * 2];
for (int i = 0; i < werte.length; i++) {
doubled[2 * i] = werte[i];
doubled[2 * i + 1] = werte[i];
}
return doubled;
}
Ginge auch. Dafür spräche, man hätte die unheimlich komplizierte Rechnung nur auf einer Seite...
for (int i = 0, j = 0; i < werte.length; i++) {
doubled[j++] = werte[i];
doubled[j++] = werte[i];
}
Dafür allerdings dieses „versteckte“Keine "komplizierte" Rechnung mehrJava:for (int i = 0, j = 0; i < werte.length; i++) { doubled[j++] = werte[i]; doubled[j++] = werte[i]; }
j++
Naja zählen oder berechnen, dass sind die 2 Optionen. Wenn eine Berechnung schon kompliziert ist, was ist dann zählen? Die Frage ist, was ist dann einfach?Dafür allerdings dieses „versteckte“j++
for (int i = 0, j = 0; i < werte.length; i++, j+=2) {
doubled[j] = werte[i];
doubled[j+1] = werte[i];
}
Rechnen? Was war das nochmal? 😁🤣Wenn eine Berechnung schon kompliziert ist