# Array in ArrayList



## Kickfree (19. Dez 2015)

Hallo,

ich hab im folgendem Code ein Array in eine ArrayList übergeben.
Wie kann ich die ArrayList mit den Arrays auf der Console ausgeben?


```
import java.util.*;


public class Variable {

    ArrayList<String[]> ersteListe = new ArrayList<String[]>();
    String[] arr = new String[2];
    String eingabe;
   
    public void eingabe() {
        for(int i=0; i<arr.length; i++){
            eingabe = StdInput.readString(i + ". String: ");
        }
        ersteListe.add(arr);
    }
   
    public void ausgabe(){
    //Hier soll die Ausgabe hin   
    }
}
```


----------



## InfectedBytes (19. Dez 2015)

z.B. mit for-Schleifen. Mit einer schleife läufst du über die Liste und erhälst immer ein einzelnes Array. In dieser Schleife kannst du nun eine weitere Schleife schreiben, welche über dieses einzelne Array läuft und den Inhalt ausgibt.
Dafür kannst du halt entweder die "herkömmliche" for-Schleife benutzen: 
	
	
	
	





```
for(int i=0; i<ersteListe.length(); i++) { ... }
```
oder eben auch die for-each Schleife (in diesem Fall schöner) 
	
	
	
	





```
for(String[] arr : ersteListe) { ... }
```


----------



## Kickfree (19. Dez 2015)

Die herkömmliche for-Schleife, wie du sie genannt hast, funktioniert bei mir nicht bzw. das .length() wird mir als Fehler angezeigt. Könntest du den zweiten Code näher erklären? 


```
public void ausgabe(){
    //Hier soll die Ausgabe hin   
        for(String[] arr : ersteListe){
            for(int x=0; x<arr.length; x++){
                System.out.println(arr[x]);
            }
        }
    }
```
so bekomme ich nur "null" als Ausgabe...


----------



## InfectedBytes (19. Dez 2015)

das length() funktioniert nur bei der Liste, bei Arrays ist nur length


----------



## Kickfree (19. Dez 2015)

die length()-Methode ist bei mir nicht vorhanden, trotz Import von java.util.*


----------



## InfectedBytes (19. Dez 2015)

wie gesagt, die length() Methode funktioniert halt auch nur bei Listen...
Bei Arrays ist nur ein Feld namens length


----------



## InfectedBytes (19. Dez 2015)

wenn du null als ausgabe bekommst, heißt es wohl das du dein array falsch befüllt hast


----------



## InfectedBytes (19. Dez 2015)

Kickfree hat gesagt.:


> Hallo,
> 
> ```
> public void eingabe() {
> ...


Schau dir nochmal deinen Code an. Du liest immer nur in den String eingabe rein, veränderst aber nie dein Array. Dementsprechend sind alle deine Array Einträge null.


----------



## Kickfree (19. Dez 2015)

```
public void ausgabe1(){
        for(String[] arr : ersteListe){
            for(int x=0; x<arr.length; x++){
                System.out.println(arr[x]);
            }
        }
    }
  
    public void ausgabe2(){
        for(int i=0; i<ersteListe.length(); i++){
            for(int x=0; x<arr.length; x++){
                System.out.println(arr[x]);
            }
        }
    }
```

Bei ausgabe1 wird auf der Console nur "null" ausgegeben (es wurde per Eingabe mit Strings gefüllt).
Und bei ausgabe2 zeigt es mir einen Fehler bei .lenght() an, obwohl ich auf meine Liste (ersteListe) zugreifen will?


----------



## Kickfree (19. Dez 2015)

ausgabe1 hat sich in dem Fall erledigt, hab ich verpennt zu übergeben...


----------



## InfectedBytes (19. Dez 2015)

ah und sorry mein Fehler, bei ArrayList heißt es size()


----------



## Kickfree (19. Dez 2015)

Vielen Dank! Jetzt funktioniert beides


----------



## Kickfree (19. Dez 2015)

eine Frage hab ich noch..
im folgenden Code werden zwei Objekte erstellt und in der ArrayList gespeichert, jedoch werden die erst eingegeben Daten von den zweit eingegeben Daten (im Array) überschrieben... Wie muss ich meinen Code ändern um das zu verhindern?


```
import java.util.ArrayList;
import java.util.List;

public class Main {

    public static void main(String[] args) {
       
        List<String[]> arrList = new ArrayList<String[]>();
        String[] arr = new String[3];
       
        String automarke = null;
        String modell = null;
        String leistung = null;
       
        //erstes Objekt
        Objekt o = new Objekt();
        o.setEingabe(arrList, arr, automarke, modell, leistung);

        //zweites Objekt
        Objekt e = new Objekt();
        e.setEingabe(arrList, arr, automarke, modell, leistung);
        e.ausgabe(arrList, arr);
    }
}
```


```
import java.util.List;

public class Objekt {
   
    public void setEingabe(List<String[]> arrList, String[] arr, String automarke, String modell, String leistung) {
        arr[0] = automarke = StdInput.readString("Automarke: ");
        arr[1] = modell = StdInput.readString("Modell: ");
        arr[2] = leistung = StdInput.readString("Leistung: ");
        arrList.add(arr);
    }
   
    public void ausgabe(List<String[]> arrList, String[] arr){
        for(int i=0; i<arrList.size(); i++){
            System.out.println(i + ". Datensatz:");
            for(int x=0; x<arr.length; x++){
                System.out.println(arr[x]);
            }
        }
    }
}
```


----------



## Flown (19. Dez 2015)

Jeweils neue String arrays übergeben.

PS: deine Ausgabe ist mist!


----------



## Kickfree (19. Dez 2015)

d.h. für jedes Objekt ein eigenes Array?


----------



## Flown (19. Dez 2015)

Du kannst schon in das selbe Array immer wieder einlesen, aber musst es dann bevor du es in die Liste einträgst kopieren. Alternativ du liest immer in ein neues Array ein.


----------



## Kickfree (19. Dez 2015)

und wie setzt ich das um?


----------

