java - 字符串无法转换为 double

标签 java string double calculator value-of

我正在尝试用Java制作一个计算器,一切正常,直到出现此错误: 不兼容的类型:

字符串无法转换为 double

格式说明符“%.0f”参数 1 的值类型“String”无效

这是脚本:

private void btnResultActionPerformed(java.awt.event.ActionEvent evt) {                                     
    String answer;

    second = Double.parseDouble(display.getText()); // The second number to count
    if (operation == "+") {
        answer = String.valueOf(first + second);
        result = String.format("%.0f",answer);
        display.setText(String.valueOf(result));
    } else if (operation == "-") {
        answer = String.valueOf(first - second);
        result = String.format("%.0f",answer);
        display.setText(String.valueOf(result));
    } else if (operation == "*") {
        answer = String.valueOf(first * second);
        result = String.format("%.0f",answer);
        display.setText(String.valueOf(result));
    } else if (operation == "/") {
        answer = String.valueOf(first / second);
        result = String.format("%.0f",answer);
        display.setText(String.valueOf(result));
    }

}   

变量“first”、“second”和“result”是 double ,操作是字符串。 我以前没有遇到过这个错误,但过了一会儿它开始出错,所以我添加了 String.valueOf(first + secondary); ,之前答案=第一+第二;但添加 valueOf 解决了这个问题。现在问题仍然存在于“result = String.format(“%.0f”,answer);”

最佳答案

您还需要将 answer 设为 double,因为您正在进行计算。仅在显示/格式化阶段您才应该转换为字符串

您应该只将计算部分放在 if 中(即 answer = first + secondary,其中 answer 是一个 double ),然后将其转换为字符串以避免重复代码。

最后使用equals()compare Strings ,所以 operation.equals("+") 而不是 ==

关于java - 字符串无法转换为 double ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43998496/

相关文章:

JavaFX - 调用 UI 更新方法并在中间暂停

java - 通过 Android/jsoup 以 URL 格式抓取数据

c++ - 我应该使用字符串还是 char[]?

string - J2ME 十六进制字符串转整数

java - 返回数据不带两位小数 :Rounding Doubles

java - Java从csv文件读取数据

java - 触发从 liferay portlet 注销

ruby - 在 Ruby 中定义自定义通用分隔输入

java - Java 中的数值规范

c++ - DBL_MAX 加法是如何工作的?