gpt4 book ai didi

Java-Calculator 多计算

转载 作者:行者123 更新时间:2023-12-01 13:38:28 27 4
gpt4 key购买 nike

我已经为计算器编写了代码,但它还不能 100% 可靠地工作。每次我进行计算时,例如:“1+1=2”,并且我想要进行另一次计算,我必须关闭小程序并重新启动它。我怎样才能让它回到开始的地方。

这是代码:

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){ }


}

最佳答案

您在这里遇到问题是因为您不小心使用 if 和 else 语句以及程序的逻辑。首先,在 ButtonOperationactionPerformed 方法中,有一个 if(e.getActionCommand().equals("-")) if(e.getActionCommand().equals("+"))内部。这没有道理,不是吗?您使用这些 if 测试的命令是互斥的,因此您需要的是 - 操作的 else if 。然后在 ButtonAusfuehren actionPerformed() 方法中:再次考虑一下您想要做什么。您不需要最后一个 else - 您始终可以将结果字段 (ergebnisFeld) 设置为结果。此外,操作本身也不会起作用,因为第二次完成操作时,参数之一(arg1arg2)将是一个空字符串。如果考虑到这一点,您会得到类似这样的结果,加上其他更改,使您的计算器可以正常工作:

        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);
}
}

关于Java-Calculator 多计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21055622/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com