# Integer.parseInt



## MichaelR (14. Okt 2008)

Hallo zusammen,
bin ein totaler Java Neuling und hab auch davor noch mit keiner anderen Sprache programmiert.
Würd mal gern wissen, ob ich den Definitionsbereich von der Integer.ParseInt einschränken kann. Ich will einen String einlesen lassen und diesen dann übergeben. Es soll nun nicht nur bei Buchstaben eine Exception auslösen, sondern auch wenn die übergebene Zahl nicht zwischen 0 und 20 liegt. 
Hier noch der Quellcode, falls es hilft. Ach ja, wär auch an anderen eleganten, aber einfachen (Neuling), interessiert.


Das ist mein Code


```
package paket1;

public class RandomSpanisch {

public static void main (String [] args){
		String a =null; 
		
		String s = javax.swing.JOptionPane.showInputDialog ("Bitte Zahl eingeben");
		int z=0;

		z = Integer.parseInt(s);

		if (z>20) javax.swing.JOptionPane.showMessageDialog(null, "Keine Zahlen größer als 20");
		if (z<0) javax.swing.JOptionPane.showMessageDialog(null,"keine Zahlen kleiner als 0") ;
		
                  try{
			if (z==0)a=" cero";
			...// hier werden alle Zahlen bis 20 aufgelistet
			if (z==20)a=" veinte";
			javax.swing.JOptionPane.showMessageDialog(null, z+a);	 
			
			
		}
		
		catch (Exception o){
			javax.swing.JOptionPane.showMessageDialog(null,"Ganze Zahl zwischen 0-20 eingeben ");
			
		}
			
		
		
		
	}
}
```


----------



## 0x7F800000 (14. Okt 2008)

1) Exceptions sollten (wie der name schon sagt) nur in Ausnahmefällen auftreten. Bei jeder (durchaus zu erwartender) falschen Eingabe des Benutzers das Programm künstlich mit unnötigen exceptions zu zerfetzen ist zum einen äußerst benutzerunfreundlich, und zum anderen sicherlich nicht nötig. Wenn die Zahl nicht passt, weise den Benutzer darauf hin und frag nochmal. Kein grund die Kavalerie zu alarmieren^^

2) was wird denn bei den ganzen if's abgefangen? warum ist da ein try-block drum herum?

3) wozu sind die ganzen if's überhaupt da? Wenn je nach fall unterschiedliche aktionen ausgeführt werden müssen, sieht switch(){case: ; ...} schon wesentlich übersichtlicher aus. In deinem fall werden nicht einmal unterscheidliche Aktionen ausgeführt, sondern lediglich unterschiedliche strings ausgegeben. Da ist es doch wesentlich einfacher, kürzer und übersichtlicher, die strings in ein array zu packen, und je nach eingegebenen Zahl das entsprechende wort auszugeben, ohne irgendwelche lahmen & unnötigen if-abfragen.

4) warum speicherst du das leerzeichen bei den namen der zahlen? das ist sehr unschön. Nimm das leerzeichen raus, und füge das an der stelle ein, wo es nötig ist, nämlich dort, wo die ausgabe zusammengesetzt wird.

5) Bei solch allgemeinen fragen besser in den "Allgemeines" oder "Anfängerfargen"-Subforen vorbeischauen, da kriegst du wesentlich schneller eine Antwort. Im Mathe forum geht's meistens um irgendwelche algorithmen und berechnungen [deswegen schaut hier kaum einer rein, ale haben angst  ], da passen deine Italienischhausaufgaben nicht wirklich rein 

6)



> Ach ja, wär auch an anderen eleganten, aber einfachen (Neuling), interessiert.
> 
> ```
> Das ist mein Code.
> ```


6a: den ersten Satz hast du doch wohl selbst nicht verstanden^^
6b: o ja, die code tags sind schon heimtückisch, aber es gibt auch den edit-button, guggst du ober rechts direkt über dem beitrag.


----------



## Gast2 (15. Okt 2008)

Moin,


```
z = Integer.parseInt(s);
```
hier zerlegt es Dir schon Dein Programm, wenn s ein ungültiges Zeichen enthält


```
bool gueltig = false;
while(!gueltig)
{
    Try
    {
        z = Integer.parse(s);
        if (z < 0 || z > 20)
        {
             javax.swing.JOptionPane.showMessageDialog(null, "die Zahl darf nur von 0 bis 20 gehen");
        } else
        {
             gueltig = true;
        }
    } catch(Exception e) 
    {
        e.printStacktrace();
        javax.swing.JOptionPane.showMessageDialog(null, "die eingebene Zahl war keine Zahl");
    }
}
```

hand, mogel


----------



## Leroy42 (15. Okt 2008)

Andrey hat gesagt.:
			
		

> MichaelR hat gesagt.:
> 
> 
> 
> ...



Ich verstehe den Satz schon!

Denke aber, daß MichaelR nicht so wirklich das meinte,
was er da geschrieben hat!  :shock: (  )

Edit: Also zumindest bin ich weder ein eleganter noch ein einfacher Neuling!  ???:L


----------



## MichaelR (18. Okt 2008)

So, hat jetzt ne Weile gedauert. Bin zur Zeit bisschen im Stress. Aber will mich erst mal für die schnelle Hilfe bedanken. Ihr habt mir paar interessante Anregungen gegeben. Schätz mal, ich werd euch noch öfters mit meinen Problemen belästigen, dann aber im Anfängerforum.

Und naja, meine Sätze sind manchmal bisschen konfus. Bin nicht auf der Suche nach einfachen Neulingen. Es sei denn, die sind weiblich   
Bin mehr an einfachen Lösungen interessiert.


----------

