button.equals
时间: 2023-10-31 10:56:54 浏览: 32
在Java中,equals()是Object类的一个方法,用于比较两个对象是否相等。当我们使用该方法时,需要保证两个对象都是同一类型的,否则会抛出ClassCastException异常。在比较两个对象时,如果我们想比较它们的值是否相等,需要在自定义类中重写equals()方法。而对于button.equals()这个方法调用,button是一个Swing组件,比如JButton,该方法用于比较button对象是否等于另一个对象。如果用于比较两个Swing组件是否相等,需要使用其它的方法或属性,如getName()、getText()等。
相关问题
if (button.equals("C")) { // clear txtResult.setText(""); num1 = 0; num2 = 0; op = ""; } else if (button.equals("+")) { // addition num1 = Double.parseDouble(txtResult.getText()); op = "+"; txtResult.setText(""); } else if (button.equals("-")) { // subtraction num1 = Double.parseDouble(txtResult.getText()); op = "-"; txtResult.setText(""); } else if (button.equals("*")) { // multiplication num1 = Double.parseDouble(txtResult.getText()); op = "*"; txtResult.setText(""); } else if (button.equals("/")) { // division num1 = Double.parseDouble(txtResult.getText()); op = "/"; txtResult.setText(""); } else if (button.equals("=")) { // equals num2 = Double.parseDouble(txtResult.getText()); if (op.equals("+")) { txtResult.setText(Double.toString(num1 + num2)); } else if (op.equals("-")) { txtResult.setText(Double.toString(num1 - num2)); } else if (op.equals("*")) { txtResult.setText(Double.toString(num1 * num2)); } else if (op.equals("/")) { txtResult.setText(Double.toString(num1 / num2)); } } else { // digit txtResult.setText(txtResult.getText() + button); }改用switch语句
可以将上述代码改写为使用 switch 语句的形式,代码如下所示:
```
switch (button) {
case "C":
txtResult.setText("");
num1 = 0;
num2 = 0;
op = "";
break;
case "+":
num1 = Double.parseDouble(txtResult.getText());
op = "+";
txtResult.setText("");
break;
case "-":
num1 = Double.parseDouble(txtResult.getText());
op = "-";
txtResult.setText("");
break;
case "*":
num1 = Double.parseDouble(txtResult.getText());
op = "*";
txtResult.setText("");
break;
case "/":
num1 = Double.parseDouble(txtResult.getText());
op = "/";
txtResult.setText("");
break;
case "=":
num2 = Double.parseDouble(txtResult.getText());
switch (op) {
case "+":
txtResult.setText(Double.toString(num1 + num2));
break;
case "-":
txtResult.setText(Double.toString(num1 - num2));
break;
case "*":
txtResult.setText(Double.toString(num1 * num2));
break;
case "/":
txtResult.setText(Double.toString(num1 / num2));
break;
}
break;
default:
txtResult.setText(txtResult.getText() + button);
break;
}
```
使用 switch 语句可以使代码更加简洁易读,并且能够避免出现多个 if 语句嵌套的情况。
public Calculator() { super("Calculator"); this.setLocationRelativeTo(null);// set up window this.setResizable(false); this.setDefaultCloseOperation(EXIT_ON_CLOSE); this.setSize(600, 200); result = new JPanel(); answer = 0.0 ; show = new JLabel(Double.toString(answer), SwingConstants.RIGHT);// let the result at the right of the field result.add(show); JTextField input = new JTextField(Double.toString(answer));// setup the size of the text field input.setColumns(6); input.setHorizontalAlignment(JTextField.RIGHT); button = new JPanel(); button.setLayout(new GridLayout(1, 5)); CLR = new JButton("CLR");// add the buttons of calculation. add = new JButton("+"); minus = new JButton("-"); Multiply = new JButton("*"); divide = new JButton("/"); button.add(CLR); button.add(add); button.add(minus); button.add(Multiply); button.add(divide); CLR.addActionListener(e -> {// clear answer = 0.0; show.setText(Double.toString(answer)); field.setText(" "); }); add.addActionListener(e -> {// add number = field.getText(); if (!number.equals(null)) { double value = Double.parseDouble(number); answer += value; show.setText(Double.toString(answer)); field.setText(""); } }); minus.addActionListener(e -> {// minus number = field.getText(); if (!number.equals("")) { double value = Double.parseDouble(number); answer -= value; show.setText(Double.toString(answer)); field.setText(""); } }); Multiply.addActionListener(e -> {// multiply number = field.getText(); if (!number.equals("")) { double value = Double.parseDouble(number); answer *= value; show.setText(Double.toString(answer)); field.setText(""); } }); divide.addActionListener(e -> {// divide number = field.getText(); if (!number.equals("")) { double value = Double.parseDouble(number); answer /= value; show.setText(Double.toString(answer)); field.setText(""); } }); add(button); add(field); add(result); this.setLayout(new GridLayout(3, 1)); this.setVisible(true); }错哪了
这段代码似乎是一个简单的计算器程序,但是在代码中没有定义 `field` 变量,因此在添加 `field` 变量时,需要先进行定义。此外,在 `Multiply` 和 `divide` 的实现中,没有对除数为0的情况进行处理,这会导致程序抛出异常。因此应该在这两个实现中添加对除数为0的情况进行处理的代码。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)