# String zerlegen in einzelne Buchstaben (char)??



## Holmes (30. Okt 2010)

Ich versuche in einem Automat mit BlueJ (Lachautomat) den eingegebenen String, der mit [wort] bezeichnet wird, also z.B. "haha!" in die einzelnen Buchstaben aufzuteilen, sie anzeigen zu lassen, und danach prüfen zu lassen, ob das eingegebene Wort die Anforderungen erfüllt: das Wort muss so gegliedert sein: "ha{ha}!" ( {...}= bedeutet beliebig oft verwendet, hier z.B. "hahahahaha!").
Leider zeigt er bei mir in der 'for'-Zeile den Fehler 
"java.lang.NullPointerException
	at Wortverarbeitung.string_zerlegen(Wortverarbeitung.java:17)"
an, ich weiß nicht warum!

Das halbfertige Programm ist hier:

```
public class Wortverarbeitung
{
  int x;
  String wort;
 
        public Wortverarbeitung(String wort)
        {
            System.out.println("_________________________________________________");
            System.out.println("Das Wort/Der Satz heißt " + wort);
            System.out.println("Das Wort/Der Satz hat " + wort.length() + " Zeichen");
            System.out.println("Das erste Zeichen ist " + wort.charAt(0));
            System.out.println("Das letzte Zeichen ist " + wort.charAt(wort.length()-1));
        }     
        
        void string_zerlegen()
        {
         for (x=0;x<wort.length();x=x+1)
          {
           System.out.println(wort.charAt(x));  
          }
            
        }

        void anfang ()
        {
            if (wort.startsWith("ha"))
            {
                System.out.println("richtig");
            }
            else
            {
                System.out.println("falsch");
            }
        }
         
        void ende ()
        {
            if (wort.endsWith("ha!"))
            {
                System.out.println("richtig");
            }
            else
            {
                System.out.println("falsch");
            }
        }
        
        void test ()
        {
          for (int x = 0; x<=wort.length();x=x+2)
          {
           char n = wort.charAt(0);
           if (n == 'h')
           {
               System.out.println("gut gelacht");
            }
            else
            {
                System.out.println("Schlecht!");
            }
           
          }
           
        }
        
            

}
```

die betreffenden Zeilen hier:

```
void string_zerlegen()
        {
         for (x=0;x<wort.length();x=x+1)
          {
           System.out.println(wort.charAt(x));  
          }
            
        }
```
und:

```
void test ()
        {
          for (int x = 0; x<=wort.length();x=x+2)
          {
           char n = wort.charAt(0);
```

Kann mir da jemand helfen?

Schon einmal danke im Voraus!


----------



## timbeau (30. Okt 2010)

Ist der String denn auch "gefüllt"?


----------



## Noctarius (30. Okt 2010)

Würde dir ein Char-Array nicht reichen?


```
char[] chars = String.toCharArray();
```


----------



## gman (30. Okt 2010)

Hi,

du musst deiner Instanzvariable "wort" auch das zuweisen was du im Konstrutkor übergibst:


```
public Wortverarbeitung(String wort) {
    this.wort = wort;
```

Ansonsten bleibt die Instanzvariable "wort" mit dem Standardwert initialisiert, und der ist null. Daher auch
die NPE.


----------



## Holmes (30. Okt 2010)

gman hat gesagt.:


> Hi,
> 
> du musst deiner Instanzvariable "wort" auch das zuweisen was du im Konstrutkor übergibst:
> 
> ...



Vielen Dank, das war genau das, was noch gefehlt hat, ich habe den Automaten fertigstellen können!
Komisch nur, das es vorher auch ohne "this" funktioniert hat! 
Vielen Dank natürlich auch an die anderen Antworten, ich hätte nicht gedacht, dass ich so schnell ein Feedback bekomme!

Wirklich ein klasse Forum!


----------



## Noctarius (30. Okt 2010)

Holmes hat gesagt.:


> Komisch nur, das es vorher auch ohne "this" funktioniert hat!



Vermutlich war vorher bei einer der beiden Variablen der Name anders


----------



## gman (30. Okt 2010)

> Komisch nur, das es vorher auch ohne "this" funktioniert hat!



??? In dem geposteten Code war es ja noch nicht eimal mit "this" drin. Egal, jetzt funktionierts ja


----------



## Holmes (31. Okt 2010)

gman hat gesagt.:


> ??? In dem geposteten Code war es ja noch nicht eimal mit "this" drin. Egal, jetzt funktionierts ja



Ja, zum Glück! Ich war schon am Verzweifeln, dass ich da noch this einsetzen muss, auf die Idee bin ich überhaupt nicht gekommen, ich stand wohl auf dem Schlauch 

Vielen Dank nochmal


----------

