Array kopieren und neues Feld hinzufügen

Morphinus21

Mitglied
Moin zusammen...

Habe folgendes Problem:

Ich überprüfe , ob bereits ein Array vorhanden ist, wenn nicht wird ein neues angelegt..Falls bereits eins existiert, soll das Array kopiert werden in ein neues eingefügt werden und in das neue Array ein element hinzu..Aber wie genau mache ich das? habe bis jetzt dies:

Code:
import java.util.*;
import java.lang.*;
public class dynIntArray {
	
	

	String y;
	int anzahl =0;
	int Array[] = null;

public int addElements(int add)
	{
		if(Array==null)
	{
		Array = new int[1];
		Array[0]=add;
	}
	else
	{
		int Array2[] = new int[Array.length+1];

		Array= Array2;
		System.out.println("Länge des Arrays: "+Array2.length);
	}
	return add;		
	}

Was mache ich falsch?

MFG Morphinus
 
Code:
int Array2[] = new int[Array.length+1];
Wenn dieser Fall eintritt, ist Array immernoch null, sprich du kannst keine Länge abfragen. Verwende besser auch gleich noch andere Variablennamen (kleine, mit Typ am Anfang), weil Array kann ja auch die Javaklasse gemeint sein , oder...
Kenn ich den Code nicht von gestern?
 
Oh sorry, da war ich wohl vorschnell, daran sollte es nicht liegen.

Aber mal ne ernste Frage: Warum nimmst du dir nicht meinen Ratschlag von gestern zu Herzen und nimmst ein Vector? Dann könntest du dir das alles sparen.
 
Vermutlich ist es eine Programmieraufgabe, die er ohne vordefinierte Klassen wie Vector, List, etc. lösen muss.
Ist ja eine der Basisaufgaben, die eigentlich in jedem Programmierkurs vorkommt.
 
Hallo,

Java:
  public int addElements(int add)
  {
    if (Array == null)
    {
      Array = new int[1];
      Array[0] = add;
    }
    else
    {
      int Array2[] = new int[Array.length + 1];
      
      System.arraycopy(Array, 0, Array2, 0, Array.length);
      
      Array = Array2;
      Array[Array.length-1] = add;
      
      System.out.println("Länge des Arrays: " + Array2.length);
    }
    return add;
  }

MFG

zEriX
 
Zuletzt bearbeitet:
Hallo,

was funktioniert denn nicht?
Ich habe den Code mal getestet und bei mir kommt kein Fehler.

MFG

zEriX
Aber den Inhalt des Arrays hast du dir nicht ausgeben lasse, oder? ;) Dann sieht man nämlich, das es nicht funktioniert...

@Morphinus21
Du musst als erstens, wie du es schon gemacht hast, ein Array erstellen, das um 1 grösser ist als das ursprüngliche.
Dann: Du musst den Inhalt des ersten Arrays in das neue kopieren (Nehme dazu die Funktion System.arraycopy())
Dann: füge das neue Element hinzu.
Und schließlich, setze Array2 = Array.


*grüssle*
MeinerEiner

Edit: Oder mach es so, wie es zerix nach Edition seines Beitrags vorschlägt ;)
 
Hallo,

schau mal hier:
Java:
/**
 * 
 */
package de.tutorials;

import java.util.Arrays;

/**
 * @author Thomas.Darimont
 *
 */
public class ArrayExtensionExample {

    /**
     * @param args
     */
    public static void main(String[] args) {
        int[] numbers = {1,2,3};
        numbers=Arrays.copyOf(numbers, numbers.length+1);
        numbers[3]=4;
        System.out.println(Arrays.toString(numbers));
    }

}

Gruß Tom
 
Zurück