# String in (unbegrenzten) String-Array einfügen?



## Ikaragua (11. Jun 2008)

Ich bin mir sicher es ist irgendwie zu bewerkstelligen, doch die Art und Weise ist mir mehr als schleierhaft. Und dementsprechend kann ich mir auch keine Lösung ersinnen.

Vielen Dank allen Helfern!


----------



## Pappenheimer++ (11. Jun 2008)

Unbegrenzte Arrays gibt es nicht. Was es gibt, sind dynamische ("mitwachsende") Datenstrukturen wie die umspeichernde java.util.ArrayList oder die doppelt verkettete Liste java.util.LinkedList, oder oder oder. Anzumerken dabei ist aber, dass diese durch den Speicher ebenfalls begrenzt sind.


----------



## xysawq (12. Jun 2008)

```
String[] stringArray = new String[LENGTH];
String[] temp;
String string = "Text";

//Jetzt zum Hinzufügen von 'string' in 'stringArray', das ja die feste Länge 'LENGTH' hat.
temp = new String[stringArray.length + 1];
System.arraycopy(stringArray, 0, temp, 0, stringArray.length);
temp[stringArray.length + 1] = string;
stringArray = temp;
```

Etwas umständlich, aber auf diese Art "erweiterst" du sozusagen dein String-Array. Löschen funktioniert damit natürlich auch wenn man mitdenken kann .


----------



## Soul (19. Jan 2012)

Hi  

Vielleicht könnt ihr mir bei meinem Problem helfen!

Ich würde gerne meine "String zeile =""; in String[] bild = new String[]{}; einfügen. Und zwar innerhalb meiner while Schleife. Mein Code schaut zurzeit so aus:


```
//Scanner importieren
import java.util.Scanner;

public class Test2 {
	
	public static void main(String[] args) {
		
		//Scanner erstellen		
		Scanner scan = new Scanner(System.in); 					
		
		// Variablen werden erstellt
		int zeilenanzahl = 0;								  
		int zeilenlaenge = 0;
		int readzahl = 0;
		
		boolean fehler = false;							
		
		String zeile = "";
		
		//Bild Speichern
		String[] bild = new String[]{};
		
		//Überprüfung von "read"
		if(scan.next().equals("read")){
			
			//nach "read" muss eine Zahl kommen
			if(scan.hasNextInt()){
				
				//Die Zahl die nach "read" steht wird in readanzahl gespeichert
				readzahl = scan.nextInt();
			}
			
			//Fehlerausgabe
			else{
				
				System.out.println("INPUT MISMATCH");
				fehler = true;
				return;
			}
		}
		
		//Fehlerausgabe
		else{
			
			System.out.println("INPUT MISMATCH");
			fehler = true;
			return;
		}
		
		//While Schleife, wird durchlaufen solange der Scanner eine Eingabe bekommt
		while(fehler == false && readzahl > zeilenanzahl && scan.hasNext()){
			
			//Hier wird die eingabe des Scanners gespeichert
			zeile = scan.next();
			bild.add(zeile);
			
			//Die breite wird mit 0 eingelesen.
			if(zeilenlaenge == 0){			
				
				zeilenlaenge = zeile.length();				
			}
			
			//Wenn die breite nicht mit der zeilenlänge übereinstimmt, dann -> Fehler -> Fehlerausgabe erfolgt!
			else
			{
				if(zeilenlaenge != zeile.length()){
					
					fehler = true;
				}
			}
			
			//Anzanl der Zeilen wird erhöht, weil wir eventuel mehr als 1 Zeile haben wollen :-)
			zeilenanzahl++;
		}
		
		//Fehlerüberprüfung
		if(readzahl > zeilenanzahl || fehler == true){
			
			//Fehler entdeckt -> Fehlerausgabe erfolgt!
			System.out.println("INPUT MISMATCH");				
		}
		
		else
		{
			//Das Bild wird ausgegen
			System.out.println(bild);
			
			//Breite und Höhe des Bildes wird ausgegeben
			System.out.println(zeilenlaenge + " " + zeilenanzahl);
		}
	}
}
```

bild.add(zeile);   -> Diese Zeile ist zurzeit noch falsch! Ich habs vorher mit ArrayList probiert und damit hat es auch wunderbar geklappt, nur sollte ich es mit den Type: String[] lösen und dort gibts leider keinen add befehl  

lg Soul


----------



## bygones (19. Jan 2012)

[edit]nun aber
du liest doch mit readzahl die anzahl der kommenden eingaben ein.

Dann machst du [c]String[] bild = new String[readzahl];[/c]

in deiner while schleife brauchst du dann aber noch den aktuellen index an den du dann in den Array einfuegst
[/edit]


----------

