1Danke
ERLEDIGT
NEIN
NEIN
ANTWORTEN
10
10
ZUGRIFFE
1714
1714
EMPFEHLEN
-
Hallo , ich hab eine Aufgabe zu erledigen und zwar soll ich aus mehreren Arrays mit verschiedenen größen zusammenfügen, das heißt, wenn ich 8 arrays habe soll ich daraus 4 machen aus den 4 soll ich 2 machen und zum schluß 1 array mit allen werten....
hab hier mal bisschen angefangen und erstmals mit 2 Arrays angefangen...
ein Beispiel ==> 1,2,3 & 4,5,6,7,8,9 daraus soll immer abwechselnd entstehen 1,4,2,5,3,6,7,8,9...nun das mach er gut bis zu der 6 aber danach macht er nur 000 rein...
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
public final class ArrayZsmFuegen { public eingabe() { System.out.println(); System.out.println("Eingabe-Arrays:"); int[] array0 = {1, 2, 3}; System.out.println(java.util.Arrays.toString(array0)); int[] array1 = {4, 5, 6, 7, 8, 9}; System.out.println(java.util.Arrays.toString(array1)); int[] array2 = this.mergeArrays(array0, array1); System.out.println(); System.out.print("Arrays im naechsten Schritt des Zusammenfuegens:"); this.outputteArray(array2); } private final int[] mergeArrays(int[] array0, int[] array1) { int oldArrayLenghtOne = array0.length; int oldArrayLenghtTwo = array1.length; int newArrayLenght = (oldArrayLenghtOne + oldArrayLenghtTwo); int[] array2 = new int[newArrayLenght]; for(int i = 0, j = 0; i < array0.length; i++, j+=2) array2[j] = array0[i]; for(int i = 0, j = 1; i < array0.length; i++, j+=2) array2[j] = array1[i]; return(array2); } private final void outputteArray(int[] array) { System.out.println(); System.out.print("["); for(int number:array) System.out.print(number+","); System.out.print("]"); } public final static void main(String[] args) { new eingabe(); } }
-
20.05.11 11:15 #2
Moin,
vermutlich solltest Du im zweiten Fall dann auch über 'array1' laufenfor(int i = 0, j = 0; i < array0.length; i++, j+=2)
array2[j] = array0[i];
for(int i = 0, j = 1; i < array0.length; i++, j+=2)
array2[j] = array1[i];
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13
for( int i = 0, j = 0; i < array0.length; i++, j+=2 ) { array2[j] = array0[i]; } for( int i = 0, j = 1; i < array1.length; i++, j+=2 ) // !! { array2[j] = array1[i]; } Ich würde das ganze aber besser mit EINER for-Schleife lösen ..... Gruß Klaus
Es ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
Habs auch schon probiert war auch der meinung array1 zum laufen bringen inner 2. schleife, aber er stürtzt immer bei der endausgabe ab :S Exception in thread....
Mit einer Schleife? dann sollte die länge des i<array2.length oder i<newArrayLenght sein oder? ich hab schon vieles ausprobiert aber immer stürtzt das ding ab
-
20.05.11 12:13 #4
Habe es mir eben nochmal etwas genauer angeschaut - so ganz wird das in der zweiten Schleife eh' nicht klappen !
Code :1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
int[] array0 = {1, 2, 3}; System.out.println(java.util.Arrays.toString(array0)); int[] array1 = {4, 5, 6, 7, 8, 9}; System.out.println(java.util.Arrays.toString(array1)); int newArrayLenght = (oldArrayLenghtOne + oldArrayLenghtTwo); int[] array2 = new int[newArrayLenght]; // newArrayLenght ist '9' for(int i = 0, j = 0; i < array0.length; i++, j+=2) { array2[j] = array0[i]; } // array2[0] ==> 1 // array2[2] ==> 2 // array2[4] ==> 3 for(int i = 0, j = 1; i < array1.length; i++, j+=2) { array2[j] = array1[i]; } // array2[1] ==> 4 // array2[3] ==> 5 // array2[5] ==> 6 // array2[7] ==> 7 // array2[9] ==> 8 // array2[11] ==> 9 // den Index 11 gibt es eh' nicht !!
Sobald array1.length größer als array0.length ist, darfst Du 'j' nur noch um 1 inkrementierern
Ich würde es in etwas so versuchen (UNGETESTET !!) :
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
for(int i = 0, j = 0; i < array0.length; i++, j+=2) { array2[j] = array0[i]; } int j = 1; for(int i = 0; i < array1.length; i++) // wichtig ist "array1", da "array0" eben nur die Länge 3 hat ****** { array2[j] = array1[i]; if( array1.length > array0.length ) { j++; } else { j += 2; } }
Gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
Hier vergleicht er ja nur die länge des Arrays, er soll es aber erst dann machen wenn array0 keine werte mehr hat :S ich komme leider nicht drauf
weil bei dem beispiel guckt er sich direkt am anfang, aha array1 ist länger also fügt er erstmals 1 eins dazu und dann schreibt er nur den inhalt von array1 rein :S
Deine idee ist ziemlich gut...nur ich komme nicht drauf wie man es hinkriegen könnte, dass er z.B. 7 mit einem leeren inhalt vergleicht und sofort weiß aha größer also füge ich hinzu :S
-
21.05.11 00:00 #6
Moin,
jau, war unsauber - hast Recht
dann eher so:
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
for(int i = 0, j = 0; i < array0.length; i++, j+=2) { array2[j] = array0[i]; } int j = 1; for(int i = 0; i < array1.length; i++) // wichtig ist "array1", da "array0" eben nur die Länge 3 hat ****** { array2[j] = array1[i]; if( i > array0.length ) { j++; } else { j += 2; } }
Hoffe, das es zu der späten Stunden (und der 1:1-Relegationsnachfeier
) passt
gruß
KlausEs ist noch kein Meister vom Himmel gefallen - sonst hätte man schon längst seine Leiche gefunden !!
Falls ich helfen konnte, wäre eine Bewertung oder ein Danke nett ;-)
-------------------------------------------------------------------------------------------------
Ich beantworte keine Fragen per PN !!
Stellt Eure Fragen im Forum - dann haben alle etwas davon !!
-
tut mir leid dir das sagen zu müssen, aber klappt auch leider nicht habs auch schon ausprobiert, der stürtzt ab....ich bin seit gestern an dieser aufgabe dran...und finde diesen einen fehler seit gestern nicht :S habs mit allem versucht...i, j, array0, array1, array2
nichts hilft iwie
-
Ende gut alles gut
deine if abfrage hat mir den kick gegeben
habs raus danke
-
Hier noch meine Lösung. System.arraycopy ist in nativem (C++) Code geschrieben und deshalb vor allem bei großen Arrays wesentlich schneller (eventuell bei kleinen langsamer, aber Performance ist nicht alles). Außerdem ließt es sich doch so besser als mit den Schleifen.
-
Ne die Aufgabe lautet abwechselnd zusammenfügen....
hab jetzt allerdings ein anderes Problem
hab en bild mit angehängt...
falls array0<array1 fängt er so wie es sein soll, mit array0 dann array1 dann array0 usw...
quasi 123 ; 45678 => 14253678
aber wenn array0>array1 dann fängft er bei array1 an obwohl er trotzdem mit array0 anfangen sollte....
Code java:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
static int[] mergeArrays(int[] array0, int[] array1) { int oldArrayLenghtOne = array0.length; int oldArrayLenghtTwo = array1.length; int newArrayLenght = (oldArrayLenghtOne + oldArrayLenghtTwo); int[] array2 = new int[newArrayLenght]; int j=-1; if(oldArrayLenghtOne>oldArrayLenghtTwo) { for(int i = 0; i < oldArrayLenghtOne; i++) { j++; //Hier sollte er eigentlich den ersten Inhalt vom ersten //array nehmen,dann den von zweiten, leider macht er das //umgekehrt...wenn ich in der Zeile 74 array1[i] mit //array0[i] und Zeile 77 array0[i] mit array1[i] tausche //stürtzt das programm ab! if(i<oldArrayLenghtTwo) { array2[j] = array1[i]; j++; } array2[j]=array0[i]; } } else { for(int i = 0; i < oldArrayLenghtTwo; i++) { j++; if(i<oldArrayLenghtOne) { array2[j] = array0[i]; j++; } array2[j]=array1[i]; } } return(array2); }
Geändert von Amaninho (22.05.11 um 19:48 Uhr)
-
Stimmt, das hab ich wohl überlesen :-D
Ähnliche Themen
-
Anfängerfrage: in einer Schleife arrays zusammenfügen
Von IR-Bastian im Forum PHPAntworten: 7Letzter Beitrag: 16.09.08, 14:57 -
Arrays mit teilw. gleichen Weten zusammenfügen
Von brauch_mehr_schlaf im Forum PHPAntworten: 2Letzter Beitrag: 27.08.05, 03:45 -
Pfad + Name der Datei | Ich kanns nich zusammenfügen HILFE
Von egon84 im Forum C/C++Antworten: 1Letzter Beitrag: 02.06.05, 21:39 -
Arrays! Bitte Hilfe
Von TheLuCKer im Forum Visual Basic 6.0Antworten: 3Letzter Beitrag: 01.11.04, 22:37 -
Hilfe mit Arrays
Von aRR im Forum C/C++Antworten: 3Letzter Beitrag: 11.03.04, 10:47





Zitieren


Login





