You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java报错:运算符'*'无法应用于String与double,求修复方案

问题修复:Operator '*' cannot be applied to 'java.lang.String', 'double'

错误原因

报错核心是类型不匹配:你定义的price是String(字符串)类型,Java不允许直接对字符串和数值(这里的0.05是double类型)执行乘法运算,必须先将字符串转换为数值类型才能参与计算。

修复方案

有两种常见的修复方式,选其一即可:

方式一:直接读取为数值类型

将读取输入的代码改为nextDouble(),直接把用户输入的价格读取为double类型,后续可直接参与运算:

import java.util.Scanner;
public class Lab_04_01_SalesTax
{
    public static void main(String[] args) {

        Scanner myObj = new Scanner(System.in);
        System.out.println("What was the price of your purchase?");

        double price = myObj.nextDouble(); // 直接读取为double类型
        System.out.println("Price is: $" + price + " before tax.");

        double totalPrice = price * 0.05; // 用double存储计算结果,保留小数精度
        System.out.println("Total price is: $" + totalPrice);

    }
}

方式二:字符串转数值类型

如果需要保留nextLine()读取字符串的逻辑(比如处理带特殊字符的输入),可以通过Double.parseDouble()将字符串转换为double类型后再计算:

import java.util.Scanner;
public class Lab_04_01_SalesTax
{
    public static void main(String[] args) {

        Scanner myObj = new Scanner(System.in);
        System.out.println("What was the price of your purchase?");

        String priceStr = myObj.nextLine();
        System.out.println("Price is: $" + priceStr + " before tax.");

        double price = Double.parseDouble(priceStr); // 字符串转double
        double totalPrice = price * 0.05;
        System.out.println("Total price is: $" + totalPrice);

    }
}

额外注意

  • 不要用int存储totalPrice:因为税费计算会产生小数,用int会丢失精度,建议用double类型。
  • 如果需要格式化输出(比如保留两位小数),可以用System.out.printf("Total price is: $%.2f", totalPrice);来控制显示格式。

内容的提问来源于stack exchange,提问作者Yamos

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 10:35:41