我正在尝试用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/