2017-02-22 1205 views
-2

我正在使用JOptionPane类。错误:二元运算符'*'的第一个类型为错误操作数类型:java.lang.String第二个类型:双重

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 error,但我不知道这意味着什么。我怎样才能解决这个问题?

+1

这意味着你不能乘以一个字符串。 – SLaks

+0

错误很明显。字符串不能是操作操作的操作数之一。你将一个字符串和一个double相乘,这是不可能的。你需要[将其转换为双精度](http://stackoverflow.com/questions/5769669/convert-string-to-double-in-java)。 – BackSlash

+0

将字符串转换为双精度? – JNV

回答

-1

我无法评论,因为我是一个相当新的用户,但最初的问题得到回答(你必须解析为Double,因为收入通常占值,并且要执行一些算术操作上的价值),所以我要解决编辑。你从来没有每月宣布一个变量名,所以没有什么可以调用的。尝试初始化称为可变每月不过你想要的

double monthly=(income/12); 

或不过你想要的?(我不知道你想怎么定义每月,是毛或税后,因此它可能是,你需要什么声明一些每月所谓的变数)

编辑:看起来像你解决了它。那么,现在这看起来不合适。

-1

的错误应该被解释为:

你不能得到双倍如通过数字的字符串相乘的结果...

需要PARSE字符串第一个,那么你可以做数学与价值......

解决

请使用t他静态方法Double.parseDouble()

double dIncome = Double.parseDouble(income); 
double tax = dIncome -dIncome *0.3; 
-1

出现在这里double tax = income-income*0.3;错误。这是因为你试图用一个不可能的数字乘以一个字符串。

解决问题试试这个:

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

你需要以某种方式首先解析字符串到双。你不能简单地将一个数字乘以一个字符串,并期望它能够工作。 Double.parseDouble(String s)是个不错的选择。

尝试:

double income = 
    Double.parseDouble(
     JOptionPane.showInputDialog("Annual income?")); 

代替。

Javadoc for Double.parseDouble() (Java Platform SE 7)

相关问题