Swing Java 中的计算器


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
public class calc implements ActionListener
{
JFrame f;
JPanel p;
JTextField jt1,jt2,jt3;
JButton j1,j2;
static double a=0,b=0,result=0;
static int operator=0;
calc() 
{
f = new JFrame();
p = new JPanel();
jt1 = new JTextField(20);
jt2 = new JTextField(20);
j1 = new JButton("+");
j2 = new JButton("-");
jt3 = new JTextField();
f.add(p);
p.add(jt1);
p.add(jt2);
p.add(j1);
p.add(j2);
j1.addActionListener(this);
j2.addActionListener(this);
f.setVisible(true);
f.pack();
f.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
public void actionPerformed(ActionEvent ae)
{
if(ae.getSource()=="+")
{
a=Double.parseDouble(jt1.getText());
operator = 1;
b=Double.parseDouble(jt2.getText());
switch(operator)
{
case 1: result=(a+b);
}
jt3.setText(result);
}
}
public static void main(String [] args)
{
calc obj = new calc();
}
}

我正在使用Java Swing制作计算器,此代码的输出为:

calc.java:48 error: incompatible types: double cannot be converted to String 
jt3.setText(result);

我认为这不是一个大错误,好吧,请帮助我摆脱这种情况,我只想求和没有添加更多功能,例如乘法或减号等,我只想先作为小代码运行,然后我会添加更多功能,帮助将不胜感激,谢谢。

简单的方法是:

//jt3.setText(result);
jt3.setText("" + result); 

这将强制编译器创建两个值的字符串。

使用jt3.setText(String.valueOf(result));.
.setText()只接受字符串类型。
您可以在类文本字段中看到它。

类文本只能接受字符串值。
其中您作为参数提供的结果是双精度

您可以使用它将其转换为字符串

string converted = Double.toString(result);

此错误是因为JTextField期望String为其设置文本,而不是double,因此,您需要:

jt3.setText(String.valueOf(result));

jt3.setText("" + result);

第一个将结果转换为String值,而第二个将连接一个空Stringresult,并返回一个String

然而,我希望你注意的最后一个建议是,不要使用单个字母变量,使它们更具描述性,例如:

JFrame f; //This should be JFrame frame;

对于JPanel和其他变量也是如此,因为在较大的程序中,可能很难记住f意味着JFrame,而不是从摄氏度转换为华氏度或像F = m * a这样的公式,这可能会令人困惑,以后很难调试/理解。

正如上面评论中所说,使用.equals比较 Java 中的字符串,请参阅如何比较 Java 中的字符串?以获取更多信息

最新更新