# StringStorage



## Funky Taliban (26. Nov 2009)

Tach erstmal,
und zwar hab ich folgende Aufgabenstellung:
Schreibe eine Klasse namens StringStorage. Diese Klasse soll eine gewisse Anzahl Wörter speichern, die der
Benutzer eingegeben hat und diese auch wieder ausgeben. Um dies umzusetzen, verfügt die Klasse als Attribut
über ein String-Array, welches drei Elemente aufnehmen kann und von außerhalb der Klasse nicht sichtbar
ist.
Die Klasse verfügt darüber hinaus auch über die Methode addString, welche einen übergebenen String zum
Array hinzufügt. Dies kann aber nur geschehen, falls in dem Array noch noch Platz ist. Je nachdem ob dies möglich
war oder nicht, wird true oder false zurückgegeben.
Des Weiteren verfügt sie über die Methode toString (vgl Bottle-Klasse). Der Rückgabewert ist einfach die
Aneinanderreihnung aller Strings im Array und dazwischen jeweils ein Leerzeichen
(Tipp: + " ").
Vorsicht: Ist der Platz noch leer, sollte natürlich nichts zu dem String hinzugefügt werden - also inbesondere nicht
null.
Schreibe nun eine Testanwendung für die oben erstellte Klasse. Diese soll StorageApp heißen und nur aus der
main-Methode bestehen. Darin soll folgendes geschehen:
Zuerst wird ein StringStorage-Objekt erstellt. Danach wird der Benutzer wiederholt dazu aufgefordert Wörter
einzugeben, die als String eingelesen werden und sofort nach der Eingabe im StringStorage-Objekt gespeichert
werden. Nach jeder Benutzereingabe wird der Inhalt des Objektes an den Bildschirm ausgegeben. Die
Eingabe endet erst, wenn das Storage-Objekt voll ist.


Bis hab ich die Klasse StringStorage soweit:


> class StringStorage
> {
> 
> //String[] a = {1,2,3};
> ...



und die Klasse StorageApp soweit:



> public class StringStorageApp
> {
> public static void main(String [] args)
> {
> ...




Mein Problem ist jetzt,wie ich es schaffe das die Methode addString einen übergebenen String zum Array hinzufügt?
thx


----------



## Sonecc (26. Nov 2009)

erstmal, deine toString methode entspricht nicht den Anforderungen und würde unter umständen sogar eine Exception verursachen (Tipp: Überprüfe ob dein Array null ist)

zu deiner Frage:

```
public void addString()
{


}
```
Da wird kein String an die Methode übergeben und du sollst true oder false zurückgeben, falls ein String hinzugefügt wurde
Hier mal der verbesserte Methodenrumpf, den Code für die Methode musst du natürlich noch selbst machen

```
public boolean addString(String string)

         //String zum array hinzufügen - Sehr grobe Beschreibung
         //Prüfe dafür, ob das Array null ist
         //Durchlaufe nun das Array und prüfe ob die Elemente null sind
         //Ist ein Element null, füge den String hinzu und gib true zurück
         //Ist kein Element null, gib false zurück

}
```


----------



## eRaaaa (26. Nov 2009)

> ```
> //Durchlaufe nun das Array und prüfe ob die Elemente null sind
> ```



alternativ, kann man sich auch eine zählvariable anlegen, die in der addString methode hochgezählt wird. hat den vorteil, dass man nicht immer das array durchlaufen muss, sondern einfach abfragen kann, ob zähler==array.length ist etc.

(ok bei 3 array elementen vllt nicht so tragisch)


----------



## Sonecc (26. Nov 2009)

eRaaaa hat recht, so ginge es auch


----------



## Funky Taliban (27. Nov 2009)

danke für eure hilfe,ich hab mich gestern noch mal dran gesetzt,das ist dann dabei rausgekommen.funktioniert immer noch nicht:autsch:das mit dem ''speichere Werte im Storage-Objekt''
fällt mir relativ schwer


```
class StringStorage
    {
       
        
           private String[] a = new String[3];
             
        
           public boolean addString(String b,String c,String d)
                {
                    int zaehler;
                    zaehler = 0;
                    a[0] = b;
                    a[1] = c;
                    a[2] = d;
                    
                    if(zaehler==a.length)
                       zaehler = zaehler++;
                    else
                        break;
                }    
                
           public String toString()
                {
                    String str;
                    str = (a[0]  + a[1] + a[2]);
                    return str;
                }    
                    
     }
```



```
public class StringStorageApp
        {
            public static String main(String [] args)
                {
                    String b;
                    String c;
                    String d;
                    
                    StringStorage test;
                    test = new StringStorage();
                    
                    OOUtil type;
                    type = new OOUtil();
                    b = type.readString();
                    System.out.println(b);
                    c = type.readString();
                    System.out.println(c);
                    d = type.readString();
                    System.out.println(d);
                    //test.addString(b, c, d);
                    return b;
                    return c;
                    return d;
                    

                }
         }
```


----------



## Meldanor (28. Nov 2009)

Deine Funktion addString hat einen Denkfehler.

Du sollst einen String übergeben. Dieser wird dann an die zuerst verfügbare Stelle im Array geschrieben.
Sprich:
Du initialisierst deinen StringStorage. Dann hast du ein Array, was so aussieht:
1. Feld = null
2. Feld = null
3. Feld = null

Wenn du nun einen String hinzufügt mit addString(STRING) , dann sieht dein Array so aus:
1. Feld = der String vom 1. Aufruf von addString
2. Feld = null
3. Feld = null

Und wenn du nun noch 2x addString(STRING) aufrufst, dann siehst es so aus:

1. Feld = der String vom 1. Aufruf von addString
2. Feld = der String vom nächsten Aufruf von addString
3. Feld = der String vom letzten Aufruf von addString

Rufst du nun ein 4. mal die Funktion auf, sollte er ein false zurück geben.


----------



## Funky Taliban (11. Dez 2009)

danke nochmal.hat bisschen gedauert bis die aufgabe korrigiert wurde,hat aber alles gepasst


----------

