# NetBeans - Int in Textfield



## Tharian (31. Jul 2012)

Hallo!

Bin seit 2 Tagen dabei mich etwas in Java einzuarbeiten.
Hab schon etwas Erfahrung mit PHP gesammelt stolpere aber hier und da über einige - vermutlich - Kleinigkeiten.

Ich habe mir mit netBeans ein Formular zur Eingabe einer Zahl gebaut. Diese soll zunächst nur in einer Methode auf ihre Größe geprüft werden. Wenn sie zwischen 2 Werten liegt ist sie gültig, sonst halt nicht.
Auf der Konsole funktioniert das auch schon prima.

Nun hab ich aber das Problem, dass, wenn ich ein Textfeld nehme JAVA meckert, dass ein String übergeben wird und die Methode zur Auswertung ein Int erwartet.

Liegt es am Textfeld? Gibt es ein spezielles Textfeld in dem man nur Int-Werte übergeben kann und welche nur für Strings?

Der Teil des Formulars


```
public class formular extends javax.swing.JFrame {

String meldung    = "";
int zahl;

    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
        zahl = this.eingabefeld.getText();
        
        if(zahl != ""){
           ausgabe ag = new ausgabe();
           ag.giveValue(zahl);
        }
        
    }
}
```
Die Methode, die Zahl prüft

```
public void giveValue(int zahl){
        if(zahl < 10){
            wort = "zu klein";
            System.out.println(wort);
        }
        else if(zahl > 100){
            wort = "zu groß";
            System.out.println(wort);
        }
        else
        {
            System.out.println(zahl);
        }
    }
```

Ist nix spektakuläres... sind halt erste Gehversuche^^


----------



## F.S.WhiTeY (31. Jul 2012)

Moin,

erstmal willkommen in der Java-Welt. 

Dein Fehler ist wirklich nur eine Kleinigkeit. String und Integer sind zwei verschiedene Datentypen. Der Eine Text und der Andere eine Ganzzahl. 

Du musst den String zu einem Int Umwandeln ( Parsen ).

Das geht so:


```
zahl = Integer.parseInt( this.eingabefeld.getText() );
```

Damit hast du ein Integer mit dem Du arbeiten kannst.


Was natürlich noch als Fehler auftreten kann ist, das jemand eine zu große Zahl eingibt (Long) oder eine Gleitkommazahl (float, doubble).

edit: oder er gibt einen String ein, der keine Zahl repräsentiert. Es gibt auch noch möglichkeiten den Character wert aus einem String zu ziehen, das ist aber eine andere Geschichte.

Ich hoffe ich konnte dir helfen.

LG

David


----------



## Tharian (31. Jul 2012)

Vielen Dank!

Nach genau so etwas hab ich gesucht!

Leider scheint das noch nicht zu 100% zu funktionieren, denn:

bei der Abfrage 

if(zahl !=.....

meckert er immer noch, dass zahl kein Int-Wert ist.


----------



## F.S.WhiTeY (31. Jul 2012)

```
if(zahl != ""){ // != "" ist abfrage auf einen String weil "" ein leerer String ist
           ausgabe ag = new ausgabe();
           ag.giveValue(zahl);
        }
```

Richtig wäre:


```
public class formular extends javax.swing.JFrame {
 
String meldung    = "";
int zahl = 0 ; //Variable muss initialisiert werden
 
    private void jButton1MouseClicked(java.awt.event.MouseEvent evt) {                                      
       
        String eingabeText = this.eingabefeld.getText();

        if( eingabeText != "" ){
          
           zahl = Integer.parseInt( eingabeText );
           ausgabe ag = new ausgabe();
           ag.giveValue(zahl);
        }
        
    }
}
```


----------



## Brixto (31. Jul 2012)

Mit diesem Code

```
if(zahl != "")
```
vergleichst du einen Integer mit einem String.

Besser wäre es, wenn du das Ergebnis aus dem Textfeld als String abspeicherst und dann auf die länge des Strings prüfst:


```
public void giveValue(String deinString){
        if(deinString.length()< 10){
            wort = "zu klein";
            System.out.println(wort);
        }
```


----------



## Tharian (31. Jul 2012)

Juhuuu!

Es lebt!

Vielen Dank für deine Hilfe!


----------



## F.S.WhiTeY (31. Jul 2012)

@Brixto

Ich glaube das ist nicht seine Intention aber dein einwand deckt sich ja fast mit meinem. Also ganz falsch bist du nicht.


----------



## Clayn (31. Jul 2012)

F.S.WhiTeY hat gesagt.:


> Richtig wäre:
> 
> 
> ```
> ...



Was btw immer noch nicht richtig wäre denn man vergleicht String nicht (sicher) mit == oder !=

Edit:
Ich überprüf leere eingaben ja gerne so: 
	
	
	
	





```
if("".equals(eingabeText.trim()))
```

so hat man gleich ausgeschlossen das man einfach nur Leerzeichen eingegeben hat wenn nicht erwünscht


----------



## F.S.WhiTeY (31. Jul 2012)

> Was btw immer noch nicht richtig wäre denn man vergleicht String nicht (sicher) mit == oder !=



Da muss ich dir recht geben, dafür sollte man equals benutzen!


----------



## Tharian (31. Jul 2012)

Brixto hat gesagt.:


> Mit diesem Code
> 
> ```
> if(zahl != "")
> ...




Es soll ja kein Wort geprüft werden, sondern die Zahl die Übergeben wird.
wenn die übergebene Zahl kleiner als 10 ist und nicht die Länge des Wortes, welches eingegeben wurde, dann ist die Zahl zu klein. 

Dennoch Danke für deine Hilfe


----------



## Tharian (31. Jul 2012)

Danke für den Tipp mit dem equals().
Jetzt funzt es auch ohne Warnung.


----------



## Clayn (31. Jul 2012)

Noch ein kleiner Tipp zu equals() falls man nicht unbedingt 2 Variablen vergleichen will, ist eine gute Idee den "festen" String aufzurufen.
Also 
	
	
	
	





```
"foo".equals(someString)
```
anstatt 
	
	
	
	





```
someString.equals("foo")
```
denn so hat man gleich eine mögliche NPE umgangen


----------

