Elemente aus Array löschen

Morphinus21

Mitglied
Morgen zusammen,

ich soll aus einem Array Elemente löschen

Das löße ich bis jetzt so:

Code:
public void deleteElements(int delete)
	{
		
		int anzahl=0;
		for(int t=0;t<Array.length;t++)
		{
			if(Array[t]==delete)
			{
				Array[t]=0;
				System.out.println("Das Array an der Stelle " +t+ " wird auf 0 gesetzt "+Array[t]);
				anzahl++;
				System.out.println("Die Anzahl "+anzahl);
			}
		}
			if(anzahl!=0)
			{
		
				int Array3[]=new int[Array.length-anzahl];
				for(int i=0;i<Array3.length;i++)
					if(Array[i]!=0)
					{
						
						int j=0;
						Array3[j++]=Array[i];
						Array = Array3;
						
					}	
				
			}
			
		}

Er löscht zwar die Elemente die gelöscht werden sollen, aber kopiert die, dienicht gelöscht werden nicht in das Neue..Ich erhalte folgende Ausgabe:

Code:
---------------------------------
Gibt alle Elemente im Array aus :
---------------------------------
Methode ShowAllElements: 129
Methode ShowAllElements: 129
Methode ShowAllElements: 129
Methode ShowAllElements: 129
Methode ShowAllElements: 258
Methode ShowAllElements: 0
Das Array an der Stelle 0 wird auf 0 gesetzt 0
Die Anzahl 1
Das Array an der Stelle 1 wird auf 0 gesetzt 0
Die Anzahl 2
Das Array an der Stelle 2 wird auf 0 gesetzt 0
Die Anzahl 3
Das Array an der Stelle 3 wird auf 0 gesetzt 0
Die Anzahl 4

Methode ShowAllElements: 0
Methode ShowAllElements: 0
Methode ShowAllElements: 0
Methode ShowAllElements: 0
Methode ShowAllElements: 258
Methode ShowAllElements: 0

Im neuen Array sollen nur noch die Elemte angezeigt werden,die nicht gelöscht würden..Wo ist der Fehler?

MFG Morphinus
 
Hallo,

versuch es mal so

Code:
if(anzahl!=0)
{
	int Array3[]=new int[Array.length-anzahl];
                int j=0;
	for(int i=0;i<Array3.length;i++)
		if(Array[i]!=0)
		{
			
			
			Array3[j++]=Array[i];
						
		}	
	Array = Array3;

}

MFG

zEriX
 
Zuletzt bearbeitet:
Hallo Morphinus21,

was machst du hier?
Code:
for(int i=0;i<Array3.length;i++)
     if(Array[i]!=0)
     {
          int j=0;
          Array3[j++]=Array[i];
          Array = Array3;
     }
Das ist der Grund für dein Problem.
Bei jedem Durchlauf, wenn Array[i]!=0 ist, jetzt du j auf 0 und machst eine Zuweisung von Array = Array3.
Das int j=0; mus vor die Schleife und Array = Array3; hinter die Schleife.
 
Moin!
Wenn man dann noch beachtet, dass man nicht über Array3 iterieren sollte, sondern über Array, dann klappt es auch:
Code:
int j =0;
for(int i=0;i<Array.length;i++){
                if(Array[i]!=0) {
                      Array3[j++]=Array[i];
                 }
            }
            Array = Array3;
*grüssle*
MeinerEiner
 
Code:
if(anzahl!=0)
			{
		
				int Array3[]=new int[Array.length-anzahl];
				int j=0;
				for(int i=0;i<Array3.length;i++)
					
					if(Array[i]!=0)
					{
						
						
						Array3[j++]=Array[i];
						
						
					}	
				Array = Array3;
			}

So das hab ich jetzt..Aber er kopiert mir immer noch nicht die Elemente die nicht gelöscht werden sollen?

Code:
Methode ShowAllElements: 0
Methode ShowAllElements: 0

array.deleteElements(129)..Also soll die 129 gelöscht werden...Aber die 258 die noch übrig ist wird nicht kopiert?

Edit: 10 sek zu spät*G* Super Danke wie immer für eure Hilfe!!
 
Zuletzt bearbeitet:
Zurück