# Ein Wort einlesen und dann jede Buchstabe ausgeben



## Jonefen (27. Feb 2011)

Hallo ich muss ein Java Programm schreiben das folgendes machen soll:
1.Ein Wort mir 5 Buchstaben einlesen(mit InputDialog)
2. Es soll so augegeben werden:
   Eingegebenes Wort: "Hallo"
   1. Buchstabe: 'H'
   2. Buchstabe: 'a'
   3. Buchstabe: 'l' 
   4. Buchstabe: 'l'
   5. Buchstabe: 'o'

Kann mir da jemand helfen?


----------



## eRaaaa (27. Feb 2011)

String (Java Platform SE 6)


----------



## AmunRa (27. Feb 2011)

Ja man kann dir helfen , aber nur wenn du zeigst was du bereits hast, und genauer schreibst was gemacht werden soll, einen InputDialog für den Input hast du ja bereits erwähnt, aber wie soll die Ausgabe erfolgen, was ist genau das Problem vor dem du stehst, 


auf die einzelenen Zeichen deines Strings kommst du mit String.toCharArray();


----------



## Jonefen (27. Feb 2011)

Das kommt bei mir als Ausgabe
1.Buchstabe h
2.Buchstabe h
3.Buchstabe h
4.Buchstabe h
5.Buchstabe h

So sieht mein Quellcode aus: 

```
import javax.swing.JOptionPane;
/**
 * Write a description of class buchstaben here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class buchstaben{
    public static void main(String[]args){
        String wort;
        int i=0;
        wort=JOptionPane.showInputDialog(null,"Gib ein Wort mit 5 Buchstaben ein");
        int a=0;
        char zeichen;
        zeichen=wort.charAt(i);
         while(i<5){
            ++a;
             System.out.println(a+".Buchstabe" + zeichen );
            
            ++i;
            
          } 
    }
}
```


----------



## eRaaaa (27. Feb 2011)

Das 
	
	
	
	





```
wort.charAt(i);
```
 muss natürlich in die Schleife !


----------



## dehlen (27. Feb 2011)

lese mit einem buffered reader das wort ein :

```
BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
```
speichere das worzt in einem string:

```
text = input.readLine();
```

bastel eine for schleife die die länge des wortes prüft (jeden buchstaben durchgeht)

```
for(int i = 0;i<text.length();i++) {
```
benutze die methode CharAt um alle deine Buchstaben zu bekommen

```
c = text.charAt(i);
```
Gib deine Buchstaben aus

```
System.out.println("Die Buchstaben lauten: " +c);
```

EDIT:
Verdammt mal wieder zu spät =)


----------



## Jonefen (27. Feb 2011)

Danke eRaaaa leider funkt es nicht ganz als Ausgabe folgt:
1.BuchstabeH
2.BuchstabeH
3.BuchstabeA
4.BuchstabeL
5.BuchstabeL

@dehlen so weit sind wir in der Schule nicht


----------



## eRaaaa (27. Feb 2011)

Jonefen hat gesagt.:


> Danke eRaaaa leider funkt es nicht ganz als Ausgabe folgt:
> 1.BuchstabeH
> 2.BuchstabeH
> 3.BuchstabeA
> ...



Und wir sollen jetzt raten wohin du die betroffene Zeile verschoben hast? Wie sieht dein Code denn jetzt aus? Leichter wäre das evtl. für dich auch mit eine for-Schleife, siehe dehlen`s Beispiel.


----------



## Jonefen (27. Feb 2011)

eRaaaa hat gesagt.:


> Und wir sollen jetzt raten wohin du die betroffene Zeile verschoben hast? Wie sieht dein Code denn jetzt aus? Leichter wäre das evtl. für dich auch mit eine for-Schleife, siehe dehlen`s Beispiel.



Ich habs schon erledigt danke an euch alle


----------



## Jonefen (27. Feb 2011)

Ich muss noch eine erwiterte Arbeit von dem machen. So ist die Aufgabenstellung:
Ändere die vorherige Aufgabe so um,dass Texte beliebiger Länge verarbeitet werden, und dabei alle Buchstaben untereinander ausgegeben werden, z.B:

Eingegebener Text: "Auf Wiedersehen"
1. Buchstabe: 'A'
2. Buchstabe: 'u'
3. Buchstabe: 'f'
4. Buchstabe: ' '
5. Buchstabe: 'W'
6. Buchstabe: 'i'
7. Buchstabe: 'e'
8. Buchstabe: 'd'
9. Buchstabe: 'e'
10. Buchstabe: 'r'
11. Buchstabe: 's'
12. Buchstabe: 'e'
13. Buchstabe: 'h'
14. Buchstabe: 'e'
15. Buchstabe: 'n'

Hinweis:
Um dieses Beispiel zu lösen, muss man sich wohl zunächst die Anzahl der Buchstaben berechnen lassen und dann die einzelnen Buchstaben in einer Schleife herausholen.


----------



## eRaaaa (27. Feb 2011)

Der Hinweis hilft dir nicht?
--> String (Java Platform SE 6)


----------



## Jonefen (27. Feb 2011)

Nein leider nicht


----------



## Volvagia (27. Feb 2011)

Wo ist dein Problem? dehlen hat dir doch die 3 Zeilen die du brauchst aufgeschrieben, du musst sie eigendlich nur noch untereinander kopieren, und eine abschließende Klammer einfügen.


----------



## Jonefen (27. Feb 2011)

Volvagia hat gesagt.:


> Wo ist dein Problem? dehlen hat dir doch die 3 Zeilen die du brauchst aufgeschrieben, du musst sie eigendlich nur noch untereinander kopieren, und eine abschließende Klammer einfügen.



Das Problem ist so weit sind wir mit dem Stoff net ich muss es mit chatAt(i) machen


----------



## Volvagia (27. Feb 2011)

Jonefen hat gesagt.:


> Das Problem ist so weit sind wir mit dem Stoff net ich muss es mit chatAt(i) machen





dehlen hat gesagt.:


> benutze die methode CharAt um alle deine Buchstaben zu bekommen
> 
> ```
> c = text.charAt(i);
> ```


 (Text zu kurz...)


----------



## dehlen (27. Feb 2011)

ich hab dir doch ne lösung mit charAt(i) präsentiert und beliebig langen Text kannst du damit auch nehmen verstehe nicht was du willst 


```
import java.io.*;

public class Aufgabe2 {

public static void main(String[] args) throws IOException {
String text;
char c;

BufferedReader input = new BufferedReader(new InputStreamReader(System.in));
System.out.println("Geben sie ein Wort ein :");
text = input.readLine();
for(int i = 0;i<text.length();i++) {
c = text.charAt(i);

System.out.println("Die Buchstaben lauten: " +c);
}
}


}
```


OK dann stelle deine Fragen zum Code ... was verstehst du nicht bzw was hattet ihr noch nicht ?!


----------



## Jonefen (27. Feb 2011)

dehlen hat gesagt.:


> ich hab dir doch ne lösung mit charAt(i) präsentiert und beliebig langen Text kannst du damit auch nehmen verstehe nicht was du willst
> 
> 
> ```
> ...



Verstehen tue ichs aber wir haben for noch nicht benutzt, input.readLine();, und das Buffer zeugs.

Ich habe eine Lösung aber es kommt eine Fehlermeldung:

```
import javax.swing.JOptionPane;
/**
 * Write a description of class buchstabenLang here.
 * 
 * @author (your name) 
 * @version (a version number or a date)
 */
public class buchstabenLang{
    public static void main(String[]args){
        String wort;
        int i=0, b=0;
        wort=JOptionPane.showInputDialog(null,"Gib ein Wort mit ein");
        b= Integer.parseInt(wort);
        int a=0;
        
        char zeichen;
        zeichen=wort.charAt(i);
        while(b>i){
            ++a;
            zeichen=wort.charAt(i);
            System.out.println(a+".Buchstabe: '" + zeichen +"'" );
            ++i;  
          }//Der Parameter wird jedes mal um 1 erhöt und so werden die Buchstaben nach ihrer Reihenfolge ausgegeben
     }
}
```

In der Zeile wo b initialisiert wird kommt die Fehlermeldung nach dem Wort eingeben :
java.lang.NumberFormatException
For input string : " Auf Wiedersehen" (in java.lang.NumberFormatException)


----------



## Volvagia (27. Feb 2011)

Integer.parseInt versucht einen String in eine Zahl umzuwandeln. Der Fehler kommt daher, dass der String nicht nur Ziffern enthält.


----------



## Simon_Flagg (27. Feb 2011)

1. Bitte code-tags
2.
	
	
	
	





```
b= Integer.parseInt(wort);
```
 --> wort = "Auf Wiedersehen" Wo ist bitte in diesem String ein integer, den du umwandeln kannst, kein wunder das du ne numberformatexception kriegst... ich denke was du vl. machen willst ist: wort.length();

lg


----------



## dehlen (27. Feb 2011)

Jonefen hat gesagt.:


> Verstehen tue ichs aber wir haben for noch nicht benutzt, input.readLine();, und das Buffer zeugs.
> )


ihr hattet schon JOptionPane sprich swing und while Schleifen (siehe dein Lösungsvorschlag) aber noch keine For-Schleifen ?!

Was habt ihr denn für Lehrer

zum Code du kannst keinen String als Integer parsen

EDIT:
Manno -.- seid ihr schnell


----------



## Jonefen (27. Feb 2011)

DAnke an alle hab bisschen wenig nachgedacht hab schon erledigt mit length 

Danke an alle beste Java Forum


----------



## dschava (27. Feb 2011)

```
import javax.swing.JOptionPane;

public class Splitter {

	public static void main(String[] args) {
	String eingabe = JOptionPane.showInputDialog("Eingabe: ");
	
	String[] tokens = eingabe.split("");
	for(String s : tokens)
	   System.out.println(s);
	}
}
```

So wär der Code nochmal ein bisschen kürzer


----------



## Kleomatra (27. Aug 2012)

```
import javax.swing.JOptionPane;

public class beispiel{
    public static void main(String[]args){
        String wort;
        int i=0;
        wort=JOptionPane.showInputDialog(null,"Gib ein Wort mit 5 Buchstaben ein");
        int a=0;
        char zeichen;
         while(i<5){
            ++a;
            zeichen=wort.charAt(i);
             System.out.println(a+".Buchstabe: " + zeichen );
            
            ++i;
            
          } 
    }
}
```

Also bei mir Funktioniert es so


----------



## AmunRa (27. Aug 2012)

Du kannst die Variable a sparen und stattdessen (i+1) verwenden.


----------



## bone2 (27. Aug 2012)

dschava hat gesagt.:


> ```
> import javax.swing.JOptionPane;
> public static void main(String[] args) {
> String eingabe = JOptionPane.showInputDialog("Eingabe: ");
> ...



Ganz viele Strings erzeugen?


```
String eingabe = JOptionPane.showInputDialog("Eingabe: ");
        
        for (char c : eingabe.toCharArray()) {
            System.out.println(c); 
        }
```
edit: nagut, syso erzeut dann ja auch wieder strings...


----------



## langhaar! (27. Aug 2012)

Leute, das Problem ist über ein Jahr alt.
Warum gräbt man solche Leichen aus?


----------

