# Arrays



## Java1998 (28. Nov 2017)

Hallo,
ich habe eine Hausaufgabe auf bekommen, ich habe auch versucht sie zu lösen habe glaube ich einen ansatz, jedoch fehlt mir ein Gedanke z.B. wie schafft man es die eingegebenen Werte in die einzelnen arrays zu speichern oder die werte immer einen weiter zu leiten.

Aufgabe:
Es soll ein Algorithmus entwickelt werden, der solange neue Namen (Zeichenketten) einliest wie die eingegebene Zeichenkette nicht leer ist. Jeder neue Name soll immer an die erste Position eines Felds (Array) der Größe 5 gespeichert werden. Alle bereits im Feld vorhandenen Namen müssen dann entsprechend um eine Position nach hinten verschoben werden. Sind alle 5 Positionen im Feld bereits belegt, wird während des Verschiebens der letzte Name in dem Feld verworfen (existiert nach dem Verschieben nicht mehr). Sobald eine leere Zeichenkette eingegeben wird, wird diese nicht mehr dem Feld hinzugefügt, sondern nur noch des Feld vollständig ausgegeben (Ende des Algorithmus).

MfG


----------



## Joose (28. Nov 2017)

Wie schaut dein Ansatz aus? Nimm dir mal Stift und Papier her und überlege dir welche einzelnen Schritte du dafür machen musst?
Kannst du etwas in eigene Methoden auslagern?


----------



## Java1998 (28. Nov 2017)

Ich habe ein Problem damit die Werte immer einen weiter zu rücken...
Ansatz im Anhang.


----------



## Robat (28. Nov 2017)

Code bitte in [code=Java]MY CODE[/code] Tags. So kann man das weder lesen noch zitieren.


----------



## Java1998 (28. Nov 2017)

```
public class vier extends MiniJava {

    /**
     * Dies ist der Einstiegspunkt in Ihren Algorithmus. Alle Anweisungen innerhalb der geschweiften Klammern
     * werden ausgefuehrt.
     * 
     * WICHTIG: Definieren Sie Ihren Algorithmus ausschliesslich in dem dafuer gekennzeichneten Bereich!
     * 
     * @param args Eine Menge zusaetzlicher Parameter, die beim Aufruf des Programms mit uebergeben werden
     * koennen. Diese Menge ist in der Regel leer und wird nur bei expliziter Nennenung in einer Aufgabenstellung
     * verwendet.
     */
    public static void main(String[] args) {   
        /* >>>> Beginn des Bereichs zur Definition von Algorithmen >>>> */
       
        String array[] = new String [5];
        String name = "null";
        String array1[] = new String [1];
        //Zuordnung von Null an jeden Array
        for(int i = 0; i < array.length; i++){
            array[i] = "null";
        }
        ausgabe(name, array, array1);

           
       
       
    }
    //Unterprogramm 1
    public static void ausgabe(String name, String array[], String array1[]){
   
        name = readString();
        array1[0] = name;
        if(name.length() > 0){
               
            array[0] = array1[0];
               
            write (array[0]);
            write (array[1]);
            write (array[2]);
            write (array[3]);
            write (array[4]);
           
            array[1] = array[0];
            array[0] = array1[0];
               
               
            array[2] = array[1];
            array[0] = array1[0];
            array[1] = array[0];
               
               
               

            ausgabe(name, array, array1);
        }
        else{
            write("Eingabe beendet");
        }
       
    }



        /* >>>>  Ende des Bereichs zur Definition von Algorithmen  >>>> */
}
```


----------



## Java1998 (28. Nov 2017)

Ich bekomme es hin das der erste wert neu eingelesen wird und den zweiten wert überschreibt aber weiter komme ich nicht.


----------



## Robat (28. Nov 2017)

Was genau macht denn wie `write` Methode?
Momentan hast du noch das Problem, dass du die Werte im Array überschreibst ohne diese verrückt zu haben.
Das Verschieben solltest du von Hinten angehen

```
Stelle3 -> Stelle4
Stelle2 -> Stelle3
Stelle1 -> Stelle2
Stelle0 -> Stelle1
```
und am Ende deinen neuen, eingelesenen Wert ins Array an Stelle 0 packen.
So verhinderst du, dass du Werte überschreibst ohne sie vorher "gesichert" zu haben.

Wozu brauchst du `array1` ? War das so vorgegeben?


----------



## Java1998 (28. Nov 2017)

Stimmt danke ich hatte einen Denkfehler mit array1 und vielen Dank es geht jetzt auf und es kommt das richtige dabei raus


----------

