错误:二进制运算符'*';第一种类型:java.lang.String第二种类型:double

错误:二进制运算符'*';第一种类型:java.lang.String第二种类型:double,java,Java,我正在使用JOptionPane类 JOptionPane.showInputDialog("Annual income?"); String income; income = JOptionPane.showInputDialog("Annual income?"); double tax = income-income*0.3; double salary = (tax

我正在使用
JOptionPane

JOptionPane.showInputDialog("Annual income?");   
String income;         
income = JOptionPane.showInputDialog("Annual income?");    

double tax = income-income*0.3;                                             
double salary = (tax/12);                             

JOptionPane.showMessageDialog(null ,"Monthly in-hand salary is $"+monthly);   
System.exit(0);

上面说“双重征税”一行有错误,但我不知道怎么了。它还提到了一个
java.lang.String错误
,但我也不知道这是什么意思。如何解决此问题?

错误应解释为:

字符串与数字相乘不能得到双精度…”

您需要先解析字符串,然后才能使用该值进行计算

解决方案

使用静态方法
Double.parseDouble()


此处出现错误
double tax=收入*0.3。这是因为您试图将一个字符串与一个不可能的数字相乘

要解决此问题,请尝试以下方法:

double income = Double.parseDouble(JOptionPane.showInputDialog("Annual income?")); // you can expand on this by validating prior to assigning

首先需要将字符串解析为double。你不能简单地把一个数字和一个字符串相乘,然后期望它起作用
Double.parseDouble(字符串s)
是一个不错的选择

尝试:

相反


这意味着不能将字符串相乘。错误很明显。字符串不能是算术运算的操作数之一。将字符串与双精度相乘,这是不可能的。你需要。将字符串转换为双精度?@madcity是的。字符串不是数字,不能用作乘法的操作数。你需要先把它转换成一个数字。请参阅我之前评论中的链接。一旦回答了原始问题,请不要删除它。这可能会在将来帮助其他用户。已请求回滚到第4版。
double income = Double.parseDouble(JOptionPane.showInputDialog("Annual income?")); // you can expand on this by validating prior to assigning
double income =
    Double.parseDouble(
        JOptionPane.showInputDialog("Annual income?"));