计算器 - setText(String)不适用于双打

时间:2017-05-23 19:54:51

标签: java string jframe value-of

所以我正在尝试制作一个计算器,我正在使用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);

3 个答案:

答案 0 :(得分:2)

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

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

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

display.setText(String.valueOf(Math.sqrt(....

答案 1 :(得分: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 )

答案 2 :(得分:0)

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

应该是

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

因为您需要sqrt的String表示。 setText()无法取Double