# Taschenrechner



## MixXeD (29. Apr 2010)

Hi,
Ich hab ein riesen Problem. Wir sollen in Info nen Taschenrechner programmieren mit java me und ich weiß nicht wirklich wie das geht. Ich brauch ja 3 Textfields. 1. wo zahl 1 steht 2. wo zahl 2 steht und das 3. wo das ergebnis davon steht. Der Taschenrechner soll +,-,* und / rechnen sollen.

Aus unserem letzten Teil sollen wir auch was verwenden aber ich weiß nicht genau was alles


```
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;

public class BenediktFormular extends MIDlet implements CommandListener {
       private Form mainForm; //Variable mainForm vom Typ Form deklarieren.Form ist Behälter für Formularelemente
	   private Display display; // Variable mainForm vom Typ Display, Bildschirm
	   private Command CMD_EXIT; //Variable CMD_EXIT mainForm vom Typ Command
	   private Command CMD_IRGENDWAS;
       private TextField eingabeFeld1;
	   private DateField date1;
	   private Spacer spacer1;
	   private Ticker ticker1;
	   private Command CMD_RECHNE_1_PLUS_1;
	   
	   
	   public BenediktFormular (){   // Konsruktor, heißt genauso wie die Klasse,keine Rückgabe
	                            //Im Konstruktor werden die Arbeitsschritte erledigt, die VOR dem Programmstart
								//abgearbeitet sein müssen, wird nur beim ersten Start,
								//nicht nach Pausen aufgerufen
	      display = Display.getDisplay(this); // ANforderung des Bildschirms
		  mainForm = new Form("Mein Formular");  //Erzeugung des Formulars mit "new" Überschrift des Programms
		  CMD_EXIT = new Command("Exit", Command.EXIT, 1); //Erzeugung des exit-Befehls
		  CMD_IRGENDWAS = new Command("Guten Morgen", Command.SCREEN, 1);
		  CMD_RECHNE_1_PLUS_1 = new Command("1 + 1" , Command.SCREEN, 1);
		  eingabeFeld1 = new TextField("eins", "zwei", 10, TextField.ANY);
		  date1 = new DateField("Zeit", DateField.TIME);
		  spacer1 = new Spacer(20, 20);
		  ticker1 = new Ticker ("lol" );
		  mainForm.append(eingabeFeld1);
		  mainForm.append(spacer1);
		  mainForm.append(date1);
		  mainForm.setTicker(ticker1);
		  mainForm.addCommand(CMD_EXIT); //Befehl dem Formular hinzufügen
		  mainForm.addCommand(CMD_IRGENDWAS);
		  mainForm.addCommand(CMD_RECHNE_1_PLUS_1);
		  
		  mainForm.setCommandListener(this); // Dieses Prgramm als Befehlsempfänger
		  }
	   
	   
	   protected void startApp() { // wird beim ersten Start,nicht nach Pausen aufgerufen
                  display.setCurrent(mainForm);
}

       protected void destroyApp (boolean unconditional) {

}

       protected void pauseApp() {


}
        public void commandAction(Command c, Displayable d) {
		   if (c == CMD_EXIT){
		      destroyApp(false);
			  notifyDestroyed();
			  System.out.println("commandAction aufgerufen");
			  }
			  if (c == CMD_IRGENDWAS){
		      System.out.println("Guten Morgen");
			  }
		   if (c == CMD_RECHNE_1_PLUS_1) {
		      System.out.println(1+1);
			  System.out.println("1" + "1");
			  }
			  
}
}
```


Hoffe ihr könnt mir helfen.
Danke im voraus


----------



## The_S (30. Apr 2010)

Und die Frage war jetzt?


----------



## MiDniGG (30. Apr 2010)

The_S hat gesagt.:


> Und die Frage war jetzt?



"Bitte schreib mir einen Taschenrechner!" ;-)


----------



## MixXeD (30. Apr 2010)

ja schreiben eher helfen den zu schreiben
bringt mir ja nix wenn ich hier was rauskopier und dann fragt mein lehrer ja erklär mal

mfg mixxed


----------



## MiDniGG (3. Mai 2010)

Jetzt hast Du aber immer noch keine Frage gestellt...

Was ich mal sagen könnte wäre.

Mach 4 Textfelder. Feld 1, 3 und 4 = DECIMAL Feld 2 = CHAR, disable das letzte, dann lass den user eben zahlen und feld 1 und 3 tippen und einen Operator in Feld 2... Wenn überall was drin steht wird eben das Ergebnis errechnet...

wo ist das Problem???

Gruß


----------



## MixXeD (3. Mai 2010)

hi
also textfelder machen aber wie geht das damit das das textfield als zahlen erkannt wird


```
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
 
public class BenediktFormular extends MIDlet implements CommandListener {
       private Form mainForm; 
       private Display display; 
       private Command CMD_EXIT; 
       private TextField eingabeFeld1;    SIND DIE TEXTFELDER RICHTIG?
       private TextField eingabeFeld2;
       private TextField eingabeFeld3;
       private Command CMD_ADDIEREN;
       private Command CMD_SUBTRAHIEREN;
       private Command CMD_MULTILIZIEREN;  GEHT DAS SO?
       private Command CMD_DIVIDIEREN;
       
       
       
       public BenediktFormular (){   

          display = Display.getDisplay(this);
          mainForm = new Form("Mein Formular");
          CMD_EXIT = new Command("Exit", Command.EXIT, 1); 
          CMD_PLUS = new Command("1 + 1" , Command.SCREEN, 1);
          CMD_MINUS = new Command("1 - 1" , Command.SCREEN, 1);
          CMD_MULTIPLIZIEREN = new Command("1 + 1" , Command.SCREEN, 1);
          CMD_DIVIDIEREN = new Command("1 + 1" , Command.SCREEN, 1);     WAS MUSS ICH HIER ÄNDERN?
          eingabeFeld1 = new TextField("ZAHL1", 10, TextField.ANY);
          eingabeFeld2 = new TextField("ZAHL2", 10, TextField.ANY);
          eingabeFeld3 = new TextField("ERGEBNIS", 10, TextField.ANY);
          mainForm.append(eingabeFeld1);
          mainForm.append(eingabeFeld2);
          mainForm.append(eingabeFeld3);
          mainForm.addCommand(CMD_ADDIEREN);
          mainForm.addCommand(CMD_SUBTRAHIEREN);          SO RICHTIG?
          mainForm.addCommand(CMD_MULTIPLIZIEREN);
          mainForm.addCommand(CMD_DIVIDIEREN);          


          
          mainForm.setCommandListener(this); 
          }
       
       
       protected void startApp() {
                  display.setCurrent(mainForm);
}
 
       protected void destroyApp (boolean unconditional) {
 
}
 
       protected void pauseApp() {
 
 
}
        public void commandAction(Command c, Displayable d) {
           if (c == CMD_EXIT){
              destroyApp(false);
              notifyDestroyed();
              System.out.println("commandAction aufgerufen");
              }
HIER MUSS JA AUCH WAS HIN NUR WAS?

              
}
```


----------



## The_S (10. Mai 2010)

Das Textfeld soll als Zahl erkannt werden? Hä? Möchtest du, dass man nur Zahlen im Textfeld eingeben kann, und/oder dass du den Inhalt der Textfelder als Zahl wieder auslesen kannst?


----------



## MixXeD (10. Mai 2010)

ich hab mir jetzt gedacht ich würde 3 textfelder machen ins 1 und 2 geb ich dann was ein und im dritten steht dann ein ergebnis las zahl wollte auch immer nur zahlen eingeben


----------



## The_S (11. Mai 2010)

Dann solltest du die Textfelder wohl auch nicht mit TextField.ANY sondern eher mit TextField.NUMBER oder TextField.DECIMAL initialisieren.


----------



## MixXeD (11. Mai 2010)

ja und ich muss ja auch noch mit string und so arbeiten und integer und string dann in integer umwandeln. Aber wie funktioniert das mit den Commands also plus minus ..


----------



## The_S (11. Mai 2010)

Formuliere deine Frage bitte konkreter und verständlicher. Danke!


----------

