我正在尝试构建一个可以与JButtons一起用于数字和算术操作数的计算器。每次单击JButton时,字符串变量( JTextField.The _ in )都会被更新并作为不可编辑的参数进行传递。JTextField显示要作为calculation.When的参数传入的数字。如果操作数被单击,则下一个数字应重置JTextField (即,单击4时为"678+“,JTextField应重置为"4").The问题是,它每次都会这样做,而不管后面是否存在"+".A代码片段。
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class Gui extends JFrame {
private JButton but1;
private JButton but6;
private JButton plus;
private JButton equal;
private JTextField text;
public static String textin;
public double num1;
public double num2;
public String operand;
public Gui() {
super("Calculator");
setLayout(new FlowLayout());
textin = "";
num1 = 0;
num2 = 0;
but1 = new JButton("1");
but6 = new JButton("6");
plus = new JButton("+");
equal = new JButton("=");
operand = "";
text = new JTextField(20);
text.setEditable(false);
add(text);
add(but6);
add(but1);
add(equal);
add(plus);
but1.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
textin += "1";
text.setText(textin);
}
});
but6.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if(textin.length()!=0&&textin.substring(textin.length()-1)!="+"){
textin += "6";
text.setText(textin);
textin = "6";
text.setText(textin);
} else {
textin = "6";
text.setText(textin);
}
}
});
plus.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
num2 = Double.parseDouble(textin);
num1 = num1 + num2;
textin += "+";
text.setText(textin);
operand = "+";
}
});
equal.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent event) {
if(tel == "+") {
num2 = Double.parseDouble(textin);
num1 = num1+num2;
JOptionPane.showMessageDialog(null,String.format("%f",num1));
} else {
JOptionPane.showMessageDialog(null,String.format("error"));
}
}
});
}
}but1是一个普通的按钮,而but6是一个只能在+.Unfortunately之后重置JTextField的按钮,它每次都会重置它。我删除了simplicity.The问题的其余代码,可能是在but6 JButton.Only的if语句中,executed.It没有检查"+“是否存在,或者not.Could,有人解释了为什么会这样吗?
发布于 2013-09-04 16:03:59
也许您的问题在于您正在执行以下操作:textin.substring(textin.length()-1)!="+"),而您可能需要执行此!textin.substring(textin.length()-1).equals("+")操作。
您应该使用equals()方法来检查它们是否相同。
检查另一个问题:Java String.equals versus ==。
希望这能有所帮助。
https://stackoverflow.com/questions/18257543
复制相似问题