我已經爲計算器編寫了一個代碼,但它不能100%可靠地工作。每次我做一個計算,例如:「1 + 1 = 2」,我想做另一次計算,我必須關閉小程序並重新開始。我怎樣才能讓它在開始時回到原點。Java計算器不止一次計算
下面是代碼:
package beispiele;
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
public class Kalkulator extends Applet {
String arg1= "", arg2="";
int ergebnis;
Button zahl[] =new Button[10];
Button funktion[] = new Button[4];
Button ausfuehren;
Panel zahlPanel,funktionPanel,ergebnisPanel;
TextField ergebnisFeld;
int operationArgument;
char operation;
public void init() {
operationArgument= 1; operation =' ';
setLayout(new BorderLayout());
zahlPanel = new Panel();
zahlPanel.setLayout(new GridLayout (4,3));
for (int i=9; i>=0; i--) {
zahl[i] = new Button(String.valueOf(i));
zahl[i].addActionListener(new ButtonZahlen());
zahlPanel.add(zahl[i]);
}
zahlPanel.add(new Button(".")); //leere Taste
ausfuehren = new Button("=");
ausfuehren.addActionListener(new ButtonAusfuehren()); //zu dem Listener
zahlPanel.add(ausfuehren);
add("Center",zahlPanel);
funktionPanel = new Panel();
funktionPanel.setLayout(new GridLayout(4,1));
funktion[0] = new Button("+");
funktion[0].addActionListener(new ButtonOperation());
funktionPanel.add(funktion[0]);
funktion[1] = new Button("-");
funktion[1].addActionListener(new ButtonOperation());
funktionPanel.add(funktion[1]);
funktion[2] = new Button("*");
funktion[2].addActionListener (new ButtonOperation());
funktionPanel.add(funktion[2]);
funktion[3] = new Button("/");
funktion[3].addActionListener (new ButtonOperation());
funktionPanel.add(funktion[3]);
//funktionPanel.add(new Button("*"));
//funktionPanel.add(new Button("/"));
add("East",funktionPanel);
ergebnisPanel = new Panel();
ergebnisFeld = new TextField("0",5);
ergebnisPanel.add(ergebnisFeld);
add("North",ergebnisPanel);
}
class ButtonZahlen implements ActionListener{
public void actionPerformed(ActionEvent e) {
switch (operationArgument) {
case 1 : {
arg1+=e.getActionCommand();
ergebnisFeld.setText(arg1);
break;
}
case 2 : {
arg2 +=e.getActionCommand();
ergebnisFeld.setText(arg2);
break;
}
default: { }
}
}
}
class ButtonAusfuehren implements ActionListener {
public void actionPerformed(ActionEvent e) {
if(operation =='+')
if (arg1.equals("")) {
ergebnis += new Integer(arg2);
} else {
ergebnis = new Integer(arg1) + new Integer(arg2);
}
else if(operation =='-') {
if(arg1.equals("")) {
ergebnis -= new Integer(arg2);
} else {
ergebnis = new Integer(arg1) - new Integer(arg2);
}
}
else if(operation =='*') {
if(arg1.equals("")) {
ergebnis *= new Integer(arg2);
} else {
ergebnis = new Integer(arg1) * new Integer(arg2);
}
}
else if(operation =='/') {
if(arg1.equals("")) {
ergebnis *= new Integer(arg2);
} else {
ergebnis = new Integer(arg1)/new Integer(arg2);
}
}
}
}
class ButtonOperation implements ActionListener{
public void actionPerformed(ActionEvent e) {
if(e.getActionCommand().equals("+")) {
operation = '+'; operationArgument = 2;
}
else if(e.getActionCommand().equals("-")) {
operation = '-'; operationArgument = 2;
}
else if(e.getActionCommand().equals("*")) {
operation = '*' ; operationArgument =2;
}
else if(e.getActionCommand().equals("/")) {
operation = '/' ; operationArgument =2;
}
}
}
public void paint(Graphics g){ }
}
實際上,通常在計算器一個C鍵,即清除所有以前的計算和重新啓動全部 – petajamaja
1)爲什麼要編寫一個小程序?如果這是由於規格。由老師,請參考[爲什麼CS老師應該停止教Java applets](http://programmers.blogoverflow.com/2013/05/why-cs-teachers-should-stop-teaching-java-applets/)。 2)爲什麼選擇AWT而不是Swing?看到我對[Swing extras over AWT]的回答(http://stackoverflow.com/a/6255978/418556)有很多很好的理由放棄使用AWT組件。如果您需要支持較老的基於AWT的API,請參閱[混合重量級和輕量級組件](http://www.oracle.com/technetwork/articles/java/mixing-components-433992.html)。 –
我看到過這樣的按鈕,但我不知道該怎麼做。這就是尋求幫助的原因。 我正在使用applet和awt,因爲那是老師想要的。這是一個問題,因爲很難找到關於它的詳細信息。 –