# TextField auslesen und umwandeln



## Limp (16. Apr 2008)

Hi java Fans,
ich hab in meinem Programm vor text Felder auszulesen. Erstmal nicht so schwer (auch für einen anfänger wie mich )  
Aber ich möchte mit diesem Wert rechnen also muss es eine Zahl seien. Ich meine Text Felder sind Strings also müsste ich doch einfach String to int machen. Da is aber das problem. Ich hab nichts wasauf diesen Fall zutrifft gefunden. Ich hoffe ihr helft mir weiter.

Edit sagt: Der Titel war wohl nicht ganz zu treffent


----------



## Bloody-Angle (16. Apr 2008)

hier mal eine art das zu machen:


```
public static void main(String[] args) {
     String zahl = "12";
     int rechne=Integer.parseInt(zahl)+23;
     System.out.println(rechne);
    
  }
```
gibt aber durchaus noch andere Methoden schau dir mal die java doc an: hier kann ich nur empfehlen

ach ja es wäre klug zu prüfen ob dir 
	
	
	
	





```
Integer.parseInt(zahl)
```
 auch was sinnvolles liefert kann ja sein das da keine zahl drin steht


----------



## Atze (16. Apr 2008)

du könntest einzelne zeichen aus dem string ausschneiden und gucken ob dieser char im asci berich zwischen einschließlich 48 und 75 liegt, dann ist es 100%ig ein zahl


----------



## Limp (16. Apr 2008)

aber wie mach ich da das die Zahl aus dem TextField gelesen wird?

also mein Button den man drücekn muss damit was passiert heist: b2
und die TexFields heißen tf_a, tf_b,...,tf_e.
Ich habe vor die eine Gleichung im schema f(x)=ax^5+bx^4+cx^3+dx^2+dx+e abzuleiten. man muss also a,b,c usw. eingeben und mit denen will ich rechnen.


----------



## SlaterB (16. Apr 2008)

die TextFelder musst du als Variablen definieren und in die GUI einfügen,
ihren Inhalt kannst du zum Zeitpunkt des Buttonklicks im ActionListener mit textField.getText() abfragen

aber das kann man hier nicht alles erklären, lies dir viele Seiten zu Grundlagen von graphischen Oberflächen in einem Lehrbuch durch,
gibts auch im Netz


----------



## Limp (16. Apr 2008)

also ich hab das so:
private Button b2 = new Button("Berechnen");

das is der button, der wird noch geboundet und geaddet.

hier kommt der actionListener: b2.addActionListener(new B2());

und so sieht die klasse B2 aus mit Strings geht es aber ich möchte die zu nem int bekommen.

class B2 implements ActionListener
   {
		public void actionPerformed(ActionEvent ae)
		{
			String a,b,c,d,e,f;

            a = tf_a.getText();
            b = tf_b.getText();
            c = tf_c.getText();
            d = tf_d.getText();
            e = tf_e.getText();
            f = tf_f.getText();


		}
   }


----------



## Escorter (17. Apr 2008)

Limp hat gesagt.:
			
		

> also ich hab das so:
> String a,b,c,d,e,f;
> 
> a = tf_a.getText();
> ...



machs besser so:

```
int a,b,c,d,e,f;

try{

a = Intger.valueOf(tf_a.gettext()).intValue;
b = Intger.valueOf(tf_b.gettext()).intValue;
c = Intger.valueOf(tf_c.gettext()).intValue;
d = Intger.valueOf(tf_d.gettext()).intValue;
e = Intger.valueOf(tf_e.gettext()).intValue;
f = Intger.valueOf(tf_f.gettext()).intValue;

}catch(Eception e){
 System.out.printn("Bitte geben Sie nur Zahlen ein.");
}

Dann hast du auch gleich die Prüdunf auf ne Zahl mit drin.

Gruß,
Esco
```


----------



## Limp (17. Apr 2008)

```
class B2 implements ActionListener
{
        public void actionPerformed(ActionEvent ae)
	{
		int a,b,c,d,e,f;
		try{
						           
                          a = Intger.valueOf(tf_a.getText()).intValue;
                          b = Intger.valueOf(tf_b.getText()).intValue;
                          c = Intger.valueOf(tf_c.getText()).intValue;
                          d = Intger.valueOf(tf_d.getText()).intValue;
                          e = Intger.valueOf(tf_e.getText()).intValue;
                           f = Intger.valueOf(tf_f.getText()).intValue;
		 
			  
		     }catch(Eception e)
		     {
		           System.out.printn("Sie dürfen nur Zahlen eingeben!");
		      }
	}
}
```


Dann kommt beim compilieren der Fehler:

C:\Dokumente und Einstellungen\Felix\Desktop\Funktionsplotter.java:313: cannot find symbol

symbol  : variable Intger

location: class Funktionsplotter.B2

            a = Intger.valueOf(tf_a.getText()).intValue;
                 ^


Hatte ich schon erwähnt das ich nich ganz so viel ahnung von Java habe :cry:

Edit sagt, das "^" muss unter dem "I" von Intger seien kp warum es nicht da ist


----------



## MiDniGG (17. Apr 2008)

es fehlt ein e bei IntEger!!! hf


----------



## Limp (17. Apr 2008)

oh mann hät ich ja auch mal selber sehen können. Tja das will man machen wenn man keine ahnung hat 
Aber das Problem hat sich nur nach Hinten verschoben. Jetzt wird der "." vor dem IntValue; angemeckert:

C:\Dokumente und Einstellungen\Felix\Desktop\Funktionsplotter.java:313: cannot find symbol
symbol  : variable Intger
location: class Funktionsplotter.B2
            a = Integer.valueOf(tf_a.getText()).intValue;
                                                              ^


----------



## SlaterB (17. Apr 2008)

die Fehlermeldung spricht immer noch von Intger statt Integer, nicht neu kompiliert?

und es muss
.intValue(); 
statt
.intValue; 

heißen,

willst du jetzt alles einzeln buchstabieren oder normal Java programmieren? 
dann musst du ein Lehrbuch bemühen und in der API Klassennamen/ Operationsnamen usw. nachlesen, 
wenigstens dann wenn Java meckert, dass es sie nicht kennt


----------



## activefresh (17. Apr 2008)

echt mal dir muss man echt alles dreimal vor kauen. Hättest ja gleich sagen können los leute macht mal ich guck zu.
Dafür ist ein Forum nicht gedacht!!


----------



## Limp (17. Apr 2008)

:applaus:  :applaus:  :applaus: 
Vielen vielen Dank an alle die mir geholfen haben. Jetzt funktioniert es. 


@SlateB: Hast ja recht aber im Forum gehts schneller^^ Aber ich werde auch  :### 

@activefresh: Husch Husch raus aus dem Forum sowelche wie dich kann man hier nicht gebrauchen.


----------



## Escorter (17. Apr 2008)

Sorry wegen den vielen Fehlern, aber ich bitte die Uhrzeit zubeachten. 

Gruß,
Esco


----------



## Andreas29 (19. Apr 2008)

Hi,

kleine Anmerkung noch:


```
try{ 
                              
                          a = Integer.valueOf(tf_a.getText()).intValue; 
                          b = Integer.valueOf(tf_b.getText()).intValue; 
                          c = Integer.valueOf(tf_c.getText()).intValue; 
                          d = Integer.valueOf(tf_d.getText()).intValue; 
                          e = Integer.valueOf(tf_e.getText()).intValue; 
                           f = Integer.valueOf(tf_f.getText()).intValue; 
       
           
           }catch(Eception e) 
           { 
                 System.out.printn("Sie dürfen nur Zahlen eingeben!"); 
            }
```

Das ist schlechter Stil. Man sollte nur die Exception fangen, die gefangen werden soll. Hier ist es die NumberFormatException und nicht die ganz allgemeine java.lang.Exception.

Sprich es sollte so aussehen:

```
try {
                          a = Integer.valueOf(tf_a.getText()).intValue; 
                          b = Integer.valueOf(tf_b.getText()).intValue; 
                          c = Integer.valueOf(tf_c.getText()).intValue; 
                          d = Integer.valueOf(tf_d.getText()).intValue; 
                          e = Integer.valueOf(tf_e.getText()).intValue; 
                           f = Integer.valueOf(tf_f.getText()).intValue; 
} catch (NumberFormatException nfe) {
                         System.out.println("Sie dürfen nur Zahlen eingeben!");
}
```

Hintergrund ist der:
Wenn du allgemein Exception fängst, rennt er auch in den catch-Block, wenn irgendwas anderes schiefgeht, z.B. tf_a ist null. Dann würde dein Programm auch die Fehlermeldung ausgeben und weiterlaufen, was sicherlich nicht gewollt ist. Ist besserer Stil und sicherere Programmierung. Es erlaubt dir auch, gezielter Fehlermeldungen auszugeben (Sprich, wenn Exception a auftritt, mache dies, wenn Exception b auftritt, mache etwas anderes).

Grüße,
Andreas


----------

