# Problem bei der fensterausgabe JOptionPane



## kareem (14. Apr 2011)

hi,

bin gerade mal den ersten Tag hier und schon beginne ich zwei themen.
habe am montag ein prüfung bei meinem prof und komme soweit eigentlich ganz gut klar. nur sind es immer wieder kleinigkeiten an denen ich scheiter. und diese kosten mir echt zeit.
habe nen code, der mir bei der ausgabe probleme macht. will die ganze ausgabe in einem fenster haben.
ich gebe eine zahl ein, diese wird mir als zahl im fenster angezeigt und rückwärts als ausgeschriebene zahl widergegeben. 
wenn ich also '456' eintippe, soll mein fenster die ausgabe "Die zahl 456 als Text ist: sechs  fünf vier" ausgeben. Leider kommt bei mir für jede ziffer ein separates fenster.
bei mir im kopf ist leider alles durcheinander, so dass ich informationen im mom schwer sacken lasse kann.

ich bin mir sicher das ich noch einen befehl zwischen der switch case anwendung und dem 
JOptionPane bestimmen muss. 



```
import javax.swing.*;
public class ZahlEinlesen {

	
	public static void main(String[] args) {
		int zahl;
		int rest;
		
		String ausgabe= " ";
		//Eingabefelder aufbauen:
		JTextField[] feld = {new JTextField()};		//eine Zeile
		Object[] msg = {"Bitte eine Zahl eingeben: ", feld[0]};
		
		//Dialogfenster anzeigen
		int click = JOptionPane.showConfirmDialog(null, msg, "Eingabe",2);
		
		zahl = Integer.parseInt( feld[0].getText());   //den String in eine verwertbare Zahl wandeln
		
		
		//Rückwärtige widergabe
		while(zahl!=0){
	
		rest = zahl%10;
		zahl = zahl /10;
			switch (rest){
			case 0: ausgabe = "null";   break;
			case 1: ausgabe = "eins";   break;
			case 2: ausgabe = "zwei";   break;
			case 3: ausgabe = "drei";   break;
			case 4: ausgabe = "vier";   break;
			case 5: ausgabe = "fünf";   break;
			case 6: ausgabe = "sechs";  break;
			case 7: ausgabe = "sieben"; break;
			case 8: ausgabe = "acht";   break;
			case 9: ausgabe = "neun";   break;		
	}
			
		JOptionPane.showMessageDialog(null, "Die Zahl "+feld[0].getText()+ " als Text ist: " +ausgabe);
		
	}
	}
}
```
ich bitte echt dringend um hilfe...


----------



## z-mon (14. Apr 2011)

Mit ein bißchen nachdenken wärst du auch bestimmt selbst drauf gekommen ... 


```
public static void main(String[] args)
	{
		int zahl;
		int rest;

		String ausgabe = " ";
		// Eingabefelder aufbauen:
		JTextField[] feld =
		{ new JTextField() }; // eine Zeile
		Object[] msg =
		{ "Bitte eine Zahl eingeben: ", feld[0] };

		// Dialogfenster anzeigen
		int click = JOptionPane.showConfirmDialog(null, msg, "Eingabe", 2);

		zahl = Integer.parseInt(feld[0].getText()); // den String in eine
																								// verwertbare Zahl wandeln

		// Rückwärtige widergabe
		while (zahl != 0)
		{

			rest = zahl % 10;
			zahl = zahl / 10;
			switch (rest)
			{
			case 0:
				ausgabe += " null";
				break;
			case 1:
				ausgabe += " eins";
				break;
			case 2:
				ausgabe += " zwei";
				break;
			case 3:
				ausgabe += " drei";
				break;
			case 4:
				ausgabe += " vier";
				break;
			case 5:
				ausgabe += " fünf";
				break;
			case 6:
				ausgabe += " sechs";
				break;
			case 7:
				ausgabe += " sieben";
				break;
			case 8:
				ausgabe += " acht";
				break;
			case 9:
				ausgabe += " neun";
				break;
			}
		}
		
		JOptionPane.showMessageDialog(null, "Die Zahl " + feld[0].getText()
				+ " als Text ist: " + ausgabe);
		
	}
```


----------



## Cola_Colin (14. Apr 2011)

Du musst innerhalb der while - Schleife deinen Ausgabestring zusammensetzen und ihn am Ende einmalig ausgeben.
Strings setzt man mit + oder += zusammen, z.B.


```
String x = "eins";
x += " zwei"; 
System.out.println(x); // gibt "eins zwei" aus.
```

EDIT: Soooo laaaaaangsam.


----------



## Firephoenix (14. Apr 2011)

Hi,
die JOptionPane geht wird innerhalb der while aufgerufen, geht also auch entsprechend oft auf.
Du könntest z.b. für die Ausgabe eine ArrayList<String> nehmen, in die du mit (add) die einzelnen fälle aus dem Switch speicherst.
Nach der while machst du aus den gespeicherten Strings in der Liste einen vernünftigen Ausgabetext und gibst die OptionPane aus.
Oder du verwendest im switch gleich einen StringBuilder um den Ausgabe-String zu erzeugen.
Gruß

/E: na wenigstens war ich nicht der einzige der zu lange geschrieben hat


----------



## z-mon (14. Apr 2011)

Firephoenix hat gesagt.:


> Hi,
> /E: na wenigstens war ich nicht der einzige der zu lange geschrieben hat



:lol:


----------



## kareem (14. Apr 2011)

ich danke euch allen. muss gestehen, dass die lösung von z-mon optimal gewesen ist. habe praktisch das "+" vergessen. wäre ich jetzt ehrlich nicht mehr drauf gekommen zu so später stund.
war am überlegen ein array aufzubauen, wo die zwischenergebnisse gespeichert sind. da ich aber erst seit zwei wochen "programmiere" habe ich bei arrays noch so paar probleme,wenn es ins komplexere geht.
jedenfalls allen vielen dank!!!!


----------

