Java SWT Werte aus Texfeld als INT (Taschenrechner)

Schnuffix10

Cadet 2nd Year
Registriert
Okt. 2013
Beiträge
24
Hey
Ich hoffe mir kann jemand helfen :(

Baue ein kleinen Taschenrechner mit 2 Textfeldern wo der Benutzer jeweils eine Zahl eingibt und soweit stehtauch alles.
Nur ein Problem hab ich noch. Bei den Werten aus den Textfeldern.

Diese hole ich mir über String eins = eingabefeld.getText();
Jetzt brauche ich die aber ja logischerweise als Zahl (int oder double…)
Wenn ich es parsen will, also umandeln stürzt er dabei ab. Das geht also nicht.


Probiert hab ich es wie folgt:
String eins = eingabefeld.getText();
// int zahl1 = Integer.parseInt(eins);


Code:
package test;

import org.eclipse.swt.SWT;
import org.eclipse.swt.events.MouseAdapter;
import org.eclipse.swt.events.MouseEvent;
import org.eclipse.swt.graphics.Font;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Text;


public class haupt {
	
	public static void main(String[] args) {
		
		
		
		Display display = new Display();			
		Shell shell = new Shell(display);
		shell.setText("Hello World");
		shell.setSize(500, 300);
		shell.open();

	    
	    
		Label label = new Label(shell,SWT.CENTER);
				//unterstrich
		Label unterstrich = new Label(shell, SWT.SEPARATOR| SWT.HORIZONTAL| SWT.SHADOW_OUT);
		unterstrich.setBounds(80,100,320,20);
			
		label.setFont( new Font(display,"Times new Roman", 11, SWT.BOLD ));
		label.setLocation(20,90);
		label.setText("Möchtest den Wetterbericht sehen oder den Taschenrechner öffnen?");
		label.pack();
			 
				
		
		
		Button button1 = new Button(shell, SWT.CENTER);
		button1.setText("Wettervorhersage");
		button1.setBounds(30, 150, 150, 25);
		
		Button button2 = new Button(shell, SWT.CENTER);
		button2.setText("Taschenrechner");
		button2.setBounds(300, 150, 150, 25);
		 		 	
				button2.addMouseListener(new MouseAdapter(){
					public void mouseDown(MouseEvent e) {
						// neues fenster nach klicken
					
				//		Shell shell = new Shell(display); //neues fenster
						shell.setText("Taschenrechner");
						shell.setSize(600, 400);
					
						//Schrift gib zahlen ein
						Label label1 = new Label(shell,SWT.CENTER);
						label1.setFont( new Font(display,"Times new Roman", 11, SWT.BOLD));
						label1.setText("Gib die zahlen ein und wähle einen operator");
						label1.setLocation(140,30);
						label1.pack();
						//Schrift Ergebnis
						Label label2 = new Label(shell,SWT.CENTER);
						label2.setFont( new Font(display,"Arial", 14, SWT.BOLD));
						label2.setText("Das Ergebnis ist: ");
						label2.setLocation(160,290);
						label2.pack();
						//alte buttons 
						button1.setBounds(0, 0, 0, 0);
						button2.setBounds(0, 0, 0, 0);
						label.setText("");
						unterstrich.setBounds(120,50,320,5);
						
						Text eingabefeld = new Text(shell, SWT.SINGLE|SWT.BORDER);			
						eingabefeld.setBounds(60, 60, 150, 25);
						eingabefeld.setTextLimit(30);
						
						Text eingabefeld2 = new Text(shell, SWT.SINGLE|SWT.BORDER);			
						eingabefeld2.setBounds(320, 60, 150, 25);
						eingabefeld2.setTextLimit(30);
				
						Button plus = new Button(shell, SWT.CENTER);
						plus.setText("addieren");
						plus.setBounds(50, 150, 150, 50);
						
					
						
						
						plus.addMouseListener(new MouseAdapter(){
							public void mouseDown(MouseEvent e) {
								
								String eins = eingabefeld.getText();
								String zwei = eingabefeld2.getText();
							
							
								//parsen???????
								
						
					
							}
							});
				
						Button minus = new Button(shell, SWT.CENTER);
						minus.setText("subtrahieren");
						minus.setBounds(320, 150, 150, 50);
				
							while (!shell.isDisposed()) {
									if (!display.readAndDispatch()) {
											display.sleep();
										}
									}

			
								display.dispose();
								}});
			
		
		
		
		while (!shell.isDisposed()) {
			if (!display.readAndDispatch()) {
				display.sleep();
				}
			}





		display.dispose();
		
		
		
	}

}

Vielen lieben Dank :)
 
Wenn du eine Dezimalzahl eingibst, musst du Double verwenden. Die Eingabe muss aber mit . anstatt , sein (oder du ersetzt es vorher)
 
Schonmal mit dem Debugger durchgegangen? Da kannst du sehen, welchen Wert deine Variable hat und deinen parse-Code darauf anpassen.
 
ok ich habs.
Danke euch beiden Sehr!!! :)

Problem war: wenn kein Wert vorhanden war zum parsen, stürze er ab. Also setze ich einfach:

String eins = 0 +eingabefeld.getText();
 
Oder Du setzt "0" als Default-Text für das Feld anstatt den leeren String.
Ergänzung ()

BTW: ich würde intern nur mit double arbeiten und die String-Repräsentation bei der Ausgabe auf ganze Zahlen ändern, wenn das Ergebnis mit .0 endet.
 
Zuletzt bearbeitet:
Zurück
Oben