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
相关产品推荐
相关产品推荐

