帮我删除程序中的错误?

时间:2011-03-29 13:10:19

标签: java

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
class math
{
    JFrame jf;
    JTextField jt;
    JButton jb;
    JButton jb1;
    math()
    {
        jf=new JFrame("frame");
        jf.setSize(200,200);
        jf.setVisible(true);
        jt=new JTextField(50);
        jf.setLayout(new FlowLayout());
        JButton jb=new JButton("30");
        JButton jb1=new JButton("sin");
        jb.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae)
            {
                jt.setText("30");
            }
        });
        jb1.addActionListener(new ActionListener()
        {
            public void actionPerformed(ActionEvent ae)
            {
                String s=jt.getText();
                double x=Double.parseDouble(s);
                double s1=Math.sin(x);
                jt.setText(s1);
            }
        });
        JButton jb2=new JButton("cos");
        jf.add(jt);
        jf.add(jb);
        jf.add(jb1);
        jf.add(jb2);
    }
    public static void main(String args[])
    {
        new math();
    }
}
//its giving error that double can't be applied to jt.setText

4 个答案:

答案 0 :(得分:5)

setText方法需要String,而不是double

您可以通过致电double来获取Double.toString(someDouble)的字符串。

答案 1 :(得分:2)

javax.swing.text.JTextField.setText(java.lang.String)接受String。您可以通过以下方式获得String s1的{​​{1}}代表:

jt.setText(Double.toString(s1));

现在,可以说是

jt.setText(String.valueOf(s1));

jt.setText(s1 + "");

是更好的选择,因为如果您将s1重构为其他类型,则两者都不需要更改。

就个人而言,我总是找到第三个选择,用空字符串连接字符串,这是一个不优雅的黑客。

答案 2 :(得分:1)

我认为错误是不言自明的:

double s1=Math.sin(x);
jt.setText(s1);

“setText()”方法不希望参数加倍,因为你在这里给它;它想要一个字符串。因此,将您的double转换为String,它将起作用:

double s1=Math.sin(x);
jt.setText(String.valueOf(s1));

答案 3 :(得分:0)

TextComponent类的setText方法期望其参数为String类型,因此您尝试传递给它的double需要转换为String。

更改

jt.setText(s1);

jt.setText(Double.toString(s1));