Java-Editor Taschenrechner, wie scanner anpassen?

Hallo liebe Community,

ich arbeite zur Zeit an einem Taschenrechner mit dem Java-Editor.
Bisher habe ichs hingekriegt, dass ich im Textfield Rechnung eingeben kann durch die Buttons (z.B 250+230). Allerdings weiß ich nicht, wie genau ich das mit case implementieren soll. Im Buch Java ist auch eine Insel habe ich einen Teil gefunden, selbstverständlich habe ich versucht diesen für meinen = Button und AWT-Applet anzupassen.
So sieht das aus:

public void button15_ActionPerformed(ActionEvent evt) {

double x = textField1.getText(new java.util.Scanner( System.in ).nextDouble());
char operator = textField1.getText(new java.util.Scanner( System.in ).nextLine().charAt( 0 ));
double y = textField1.getText(new java.util.Scanner( System.in ).nextDouble());

switch ( operator )
{
case ‚+‘:
textField1.setText(x+y);

case ‚-‘:
textField1.setText(x-y);

case ‚*‘:
textField1.setText(x*y);

case ‚/‘:
textField1.setText(x/y);

}
}

Wie muss ich das korrigieren damit es funktioniert? Ich weiß nicht, ob ich (weil es ein Textfield ist) das ganze erst umformen muss, weil vorher bei den Zahlenbuttons das ganze so gemacht habe (welches auch perfekt klappt):

public void button9_ActionPerformed(ActionEvent evt) {
int i = 9;
String s;

s=textField1.getText()+String.valueOf(i);
textField1.setText(s);
}

Ich hoffe ihr könnt mir weiterhelfen, wäre sehr dankbar dafür.

LG McCartney95

So, habe etwas geändert:

double x =new java.util.Scanner( System.in ).nextDouble(Double.valueOf(textField1.getText()));
char operator =new java.util.Scanner( System.in ).textField1.getText().charAt( 0 );
double y =new java.util.Scanner( System.in ).nextDouble(Double.valueOf(textField1.getText()));

switch ( operator )
{
case ‚+‘:

double c=x+y;
String s=String.valueOf(s);
textField1.setText(s);

case ‚-‘:

double c=x+y;
String s=String.valueOf(s);
textField1.setText(s);

case ‚*‘:

double d=x*y;
String s=String.valueOf(s);
textField1.setText(s);

case ‚/‘:

double e=x/y;
String s=String.valueOf(e);
textField1.setText(s);

}

Allerdings bekomme ich trotzdem einen Error.

double x =new java.util.Scanner( System.in
).nextDouble(Double.valueOf(textField1.getText()));

Hi,

hat nicht Double eine Funktion fromString oder ähnlich? Ah, Du verwendest das ja sogar:

double x = Double.valueOf(textField1.getText());

ist vollständig ausreichend.

Und wieso System.in, Du liest doch das Eingabefeld, nicht die Konsole. Was auch ginge ist

double x =new java.util.Scanner( textField1.getText()).nextDouble();

aber das ist mehr Aufwand als das obige.

Gruß, Lutz

Vielen dank, das mit dem Feld habe ich später auch geändert :wink: Allerdings habe ich einen „Strategiewechsel“ vollzogen und versuche es grade mit Stacks:

import java.awt.\*;
import java.awt.event.\*;
import javax.swing.\*;
import javax.swing.event.\*;
import java.util.Stack;
/\*\*
 \*
 \* Beschreibung
 \*
 \* @version 1.0 vom 29.02.2012
 \* @author
 \*/

public class Taschenrechner2 extends JApplet {
 // Anfang Attribute
 private TextField textField1 = new TextField();
 private Button button1 = new Button();
 private Button button2 = new Button();
 private Button button3 = new Button();
 private Button button4 = new Button();
 private Button button5 = new Button();
 private Button button6 = new Button();
 private Button button7 = new Button();
 private Button button8 = new Button();
 private Button button9 = new Button();
 private Button button10 = new Button();
 private Button button11 = new Button();
 private Button button12 = new Button();
 private Button button13 = new Button();
 private Button button14 = new Button();
 private Button button15 = new Button();
 private Button button17 = new Button();
 private Button button16 = new Button();
 private Button button18 = new Button();
 private Button button19 = new Button();
 private Button button20 = new Button();
 private Button button21 = new Button();
 private Button button22 = new Button();
 private TextField textField2 = new TextField();
 Stack meinstack = new Stack();
 Stack meinstack2 = new Stack();
 Stack meinstack3 = new Stack();
 Stack meinstack4 = new Stack();
 Stack meinstack5 = new Stack();
 // Ende Attribute

 public void init() {
 Container cp = getContentPane();
 cp.setLayout(null);
 cp.setBounds(0, 0, 210, 426);
 // Anfang Komponenten

 textField1.setBounds(0, 0, 225, 41);
 textField1.setVisible(true);
 textField1.setEditable(false);
 textField1.setCursor(new Cursor(Cursor.HAND\_CURSOR));
 textField1.setBackground(Color.WHITE);
 cp.add(textField1);
 button1.setBounds(8, 112, 41, 41);
 button1.setLabel("1");
 button1.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button1\_ActionPerformed(evt);
 }
 });
 cp.add(button1);
 button2.setBounds(56, 112, 41, 41);
 button2.setLabel("2");
 button2.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button2\_ActionPerformed(evt);
 }
 });
 cp.add(button2);
 button3.setBounds(104, 112, 41, 41);
 button3.setLabel("3");
 button3.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button3\_ActionPerformed(evt);
 }
 });
 cp.add(button3);
 button4.setBounds(8, 160, 41, 41);
 button4.setLabel("4");
 button4.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button4\_ActionPerformed(evt);
 }
 });
 cp.add(button4);
 button5.setBounds(56, 160, 41, 41);
 button5.setLabel("5");
 button5.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button5\_ActionPerformed(evt);
 }
 });
 cp.add(button5);
 button6.setBounds(104, 160, 41, 41);
 button6.setLabel("6");
 button6.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button6\_ActionPerformed(evt);
 }
 });
 cp.add(button6);
 button7.setBounds(8, 208, 41, 41);
 button7.setLabel("7");
 button7.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button7\_ActionPerformed(evt);
 }
 });
 cp.add(button7);
 button8.setBounds(56, 208, 41, 41);
 button8.setLabel("8");
 button8.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button8\_ActionPerformed(evt);
 }
 });
 cp.add(button8);
 button9.setBounds(104, 208, 41, 41);
 button9.setLabel("9");
 button9.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button9\_ActionPerformed(evt);
 }
 });
 cp.add(button9);
 button10.setBounds(56, 256, 41, 41);
 button10.setLabel("0");
 button10.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button10\_ActionPerformed(evt);
 }
 });
 cp.add(button10);
 button11.setBounds(152, 112, 41, 41);
 button11.setLabel("+");
 button11.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button11\_ActionPerformed(evt);
 }
 });
 cp.add(button11);
 button12.setBounds(152, 160, 41, 41);
 button12.setLabel("-");
 button12.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button12\_ActionPerformed(evt);
 }
 });
 cp.add(button12);
 button13.setBounds(152, 208, 41, 41);
 button13.setLabel("\*");
 button13.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button13\_ActionPerformed(evt);
 }
 });
 cp.add(button13);
 button14.setBounds(152, 256, 41, 41);
 button14.setLabel("/");
 button14.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button14\_ActionPerformed(evt);
 }
 });
 cp.add(button14);
 button15.setBounds(104, 256, 41, 41);
 button15.setLabel("=");
 button15.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button15\_ActionPerformed(evt);
 }
 });
 cp.add(button15);
 button17.setBounds(8, 304, 89, 33);
 button17.setLabel("DELETE");
 button17.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button17\_ActionPerformed(evt);
 }
 });
 cp.add(button17);
 button16.setBounds(8, 256, 41, 41);
 button16.setLabel(".");
 button16.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button16\_ActionPerformed(evt);
 }
 });
 cp.add(button16);
 button18.setBounds(104, 304, 89, 33);
 button18.setLabel("+/-");
 button18.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button18\_ActionPerformed(evt);
 }
 });
 cp.add(button18);
 button19.setBounds(8, 64, 41, 41);
 button19.setLabel("Sin");
 button19.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button19\_ActionPerformed(evt);
 }
 });
 cp.add(button19);
 button20.setBounds(56, 64, 41, 41);
 button20.setLabel("STO");
 button20.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button20\_ActionPerformed(evt);
 }
 });
 cp.add(button20);
 button21.setBounds(104, 64, 41, 41);
 button21.setLabel("RCL");
 button21.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button21\_ActionPerformed(evt);
 }
 });
 cp.add(button21);
 button22.setBounds(152, 64, 41, 41);
 button22.setLabel("Sqrt");
 button22.addActionListener(new ActionListener() { 
 public void actionPerformed(ActionEvent evt) { 
 button22\_ActionPerformed(evt);
 }
 });
 cp.add(button22);
 textField2.setBounds(8, 352, 185, 33);
 textField2.setVisible(false);
 cp.add(textField2);
 // Ende Komponenten

 }
 // Anfang Methoden
 public void button1\_ActionPerformed(ActionEvent evt) {

 int i = 1;
 String s;
 s=textField1.getText()+String.valueOf(i);
 textField1.setText(s);
 meinstack.push(new Double(13));
 }

 public void button2\_ActionPerformed(ActionEvent evt) {
 meinstack.push(new Integer(13));
 int i = 2;
 String s;
 s=textField1.getText()+String.valueOf(i);
 textField1.setText(s);
 }

 public void button3\_ActionPerformed(ActionEvent evt) {

 int i = 3;
 String s;
 s=textField1.getText()+String.valueOf(i);
 textField1.setText(s);
 }

 public void button4\_ActionPerformed(ActionEvent evt) {
 int i = 4;
 String s;

 s=textField1.getText()+String.valueOf(i);
 textField1.setText(s);
 }

 public void button5\_ActionPerformed(ActionEvent evt) {
 int i = 5;
 String s;

 s=textField1.getText()+String.valueOf(i);
 textField1.setText(s);
 }

 public void button6\_ActionPerformed(ActionEvent evt) {
 int i = 6;
 String s;

 s=textField1.getText()+String.valueOf(i);
 textField1.setText(s);
 }

 public void button7\_ActionPerformed(ActionEvent evt) {
 int i = 7;
 String s;

 s=textField1.getText()+String.valueOf(i);
 textField1.setText(s);
 }

 public void button8\_ActionPerformed(ActionEvent evt) {
 int i = 8;
 String s;

 s=textField1.getText()+String.valueOf(i);
 textField1.setText(s);
 }

 public void button9\_ActionPerformed(ActionEvent evt) {
 int i = 9;
 String s;

 s=textField1.getText()+String.valueOf(i);
 textField1.setText(s);
 }

 public void button10\_ActionPerformed(ActionEvent evt) {
 int i = 0;
 String s;

 s=textField1.getText()+String.valueOf(i);
 textField1.setText(s);
 }

 public void button11\_ActionPerformed(ActionEvent evt) {

 double a=Double.valueOf(textField1.getText());
 meinstack.push(new Double(a));
 textField1.setText("");

 }

 public void button12\_ActionPerformed(ActionEvent evt) {
 double a=Double.valueOf(textField1.getText());
 meinstack3.push(new Double(a));
 textField1.setText("");
 }

 public void button13\_ActionPerformed(ActionEvent evt) {
 double a=Double.valueOf(textField1.getText());
 meinstack4.push(new Double(a));
 textField1.setText("");
 }

 public void button14\_ActionPerformed(ActionEvent evt) {
 double a=Double.valueOf(textField1.getText());
 meinstack5.push(new Double(a));
 textField1.setText("");

}

 public void button15\_ActionPerformed(ActionEvent evt) {
 double a=Double.valueOf(textField1.getText());
 meinstack2.push(new Double(a));

 String s=String.valueOf(meinstack.pop()); //+ gehört s
 String t=String.valueOf(meinstack2.pop()); //gehört dem Gleich
 String u=String.valueOf(meinstack3.pop()); //- gehört t
 String v=String.valueOf(meinstack4.pop()); //\* gehört u
 String w=String.valueOf(meinstack5.pop()); // / gehört v
 //gehört dem Gleich

 double d=Double.valueOf(s); //+
 double h=Double.valueOf(t); //=
 double e=Double.valueOf(u); //-
 double f=Double.valueOf(v); //\*
 double g=Double.valueOf(w); // /


if (d==Double.valueOf(s)) {
 textField1.setText(String.valueOf(d+h));
} else if (e!=0) {
 textField1.setText(String.valueOf(e-h));

} else if (f!=0) {
 textField1.setText(String.valueOf(f\*h));

} else if (g!=0) {
 textField1.setText(String.valueOf(g/h));
} else {
 textField1.setText(String.valueOf(h-h));
}

}

 public void button17\_ActionPerformed(ActionEvent evt) {
 textField1.setText("");
 }

 public void button16\_ActionPerformed(ActionEvent evt) {
 String o= ".";
 String s;
 s=textField1.getText()+String.valueOf(o);
 textField1.setText(s);
 }

 public void button18\_ActionPerformed(ActionEvent evt) {
 String s;
 s=textField1.getText();
 textField1.setText("-"+s);
 }

 public void button19\_ActionPerformed(ActionEvent evt) {
 int i = 9;
 double c;
 double a;
 a=Double.valueOf(textField1.getText());
 String s;
 c=Math.sin(a);


 s=String.valueOf(c);
 textField1.setText(s);
 }

 public void button20\_ActionPerformed(ActionEvent evt) {
 String s;
 double a;
 a=Double.valueOf(textField1.getText());
 s=String.valueOf(a);
 textField2.setText(s);
 }

 public void button21\_ActionPerformed(ActionEvent evt) {
 String s;
 double a;
 a=Double.valueOf(textField2.getText());
 s=String.valueOf(a);
 textField1.setText(s);
 }

 public void button22\_ActionPerformed(ActionEvent evt) {
 int i = 9;
 double c;
 double a;
 a=Double.valueOf(textField1.getText());
 String s;
 c=Math.sqrt(a);


 s=String.valueOf(c);
 textField1.setText(s);
 }


 // Ende Methoden

}

Jedoch kommt folgender Error raus:

Exception in thread "AWT-EventQueue-1" java.util.EmptyStackException
 at java.util.Stack.peek(Stack.java:102)
 at java.util.Stack.pop(Stack.java:84)
 at Taschenrechner2.button15\_ActionPerformed(Taschenrechner2.java:354)
 at Taschenrechner2$15.actionPerformed(Taschenrechner2.java:175)
 at java.awt.Button.processActionEvent(Button.java:409)
 at java.awt.Button.processEvent(Button.java:377)

Selbstverständlich habe ich vorher noch einzelne Elemente mit Stacks getestet, alles lief reibungslos(ich konnte zwei stacks miteinander addieren), und als ich das ganze zusammengefügt hab ging es nicht mehr.