字符串无法转换为double

时间:2017-05-16 10:09:29

标签: java string double calculator value-of

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

字符串无法转换为double

无效的值类型'字符串'对于格式说明符'%。0f',参数1

这是剧本:

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));
    }

}   

变量"第一","第二"和"结果"是双打,操作是字符串。 我以前没有这个错误,但过了一段时间它开始出错了所以我添加了String.valueOf(第一个+第二个); ,在它回答之前=第一个+第二个;但添加valueOf固定。现在问题依然存在于" result = String.format("%。0f",answer);"

3 个答案:

答案 0 :(得分:1)

由于您正在进行计算,因此您也希望answer成为double。它仅适用于您应转换为String的显示/格式化阶段。

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

最后使用equals()compare Stringsoperation.equals("+")而非==

答案 1 :(得分:1)

使用%.0f作为String格式化程序的参数,您需要传递一个数字(浮点数),但在您的代码段answer中当前是一个字符串。

您可以在格式化程序中使用%s作为字符串,或者(更好)传递作为第二个参数的操作结果作为浮点而不是字符串

要恢复:

String answer = "1";
System.out.println( String.format("%.0f",answer) ); // Throws an exception


double answer = 1.d;
System.out.println( String.format("%.0f",answer) ); // Prints 1

答案 2 :(得分:1)

如果结果是双数据类型

double result = first + second;

display.setText(String.valueOf(result));