3

所以我正在尝试制作一个计算器,我正在使用 JFrame 代码并尝试使用内置的 Math 来查找数字的平方根。下面的代码是我遇到问题的地方。“display.setText(Math.sqrt(Double.parseDouble(display.getText())));”

给我“JTextComponent 类型中的方法 setText(String) 不适用于参数 (double)”的错误

    sqrt = new JButton("SQRT");
    sqrt.setBounds(298, 141, 65, 65);
    sqrt.setBackground(Color.BLACK);
    sqrt.setForeground(Color.BLACK);
    sqrt.addActionListener(new ActionListener() {

        @Override
        public void actionPerformed(ActionEvent e) {
            setTempFirst(Double.parseDouble(display.getText()));
            display.setText(Math.sqrt(Double.parseDouble(display.getText())));
            operation[5] = true;

        }
    });
    add(sqrt);
4

3 回答 3

2

由于 Math.sqrt 返回一个 double 你不能这样做:

display.setText(Math.sqrt(Double.parseDouble(display.getText())));

相反,您可以使用该方法返回的值并使用String.valueOf()类似的方法:

display.setText(String.valueOf(Math.sqrt(....
于 2017-05-23T19:56:41.053 回答
0

如您所说,此方法需要 String 而不是 double,因此您应该将结果转换为

Math.sqrt(Double.parseDouble(display.getText()))

加倍,例如:

String.valueOf(Math.sqrt(Double.parseDouble(display.getText())))

或者

Math.sqrt(Double.parseDouble(display.getText()))+""

更好的方法是将此结果格式化为一些小数位,例如:

String.format( "%.2f", YOUR_NUMBER ).

于 2017-05-23T19:58:05.323 回答
0
display.setText(Math.sqrt(Double.parseDouble(display.getText())));

应该

display.setText(Math.sqrt(Double.parseDouble(display.getText())).toString());

因为您需要 sqrt 的字符串表示形式。setText() 不能接受Double

于 2017-05-23T19:58:38.037 回答