错误表示在尝试将字符串转换为double时已在main中定义的变量,然后表示未知符号
我已经找了40多分钟试图在这个网站上找到可能与我的问题有关的答案无济于事。
我很难过。 我正在尝试将程序转换为GUI。 我正在使用Textpad,它在编译时告诉我变量已在main方法中定义。 然后当转换为int或double时,它告诉我它找不到符号并指向我想要转换的变量。 然后在我的计算过程中,它告诉我二进制运算符’*’的错误操作数类型。
import javax.swing.JOptionPane; public class PayrollGUI { // calculates payroll public static void main (String [] args) { String name = JOptionPane.showInputDialog ("Employee's Name: "); int name = Integer.parseInt(nameString); String hours = JOptionPane.showInputDialog ("Number of hours worked in a week (eg, 10: "); int hours = Integer.parseInt(hoursString); String payRate = JOptionPane.showInputDialog ("Hourly pay rate (eg, .6.75: "); double payRate = Double.parseDouble(payRateString); String federalTaxRate = JOptionPane.showInputDialog ("Federal tax witholding rate (eg, .20: "); double federalTaxRate = Double.parseDouble(federalTaxRateString); String stateTaxRate = JOptionPane.showInputDialog (" State tax witholding rate (eg, .09: "); double stateTaxRate = Double.parseDouble(stateTaxRateString); //calculate witholdings, grosspay and netpay double federalWitholding = federalTaxRate * (hours * payRate); double stateWitholding = stateTaxRate * (hours * payRate); double grossPay = hours * payRate; double netPay = grossPay - withholdings; double witholdings = federalWithodling + stateWitholding; //format to keep two digit decimal witholdings = (int) (witholdings * 100) /100.0; netPay = (int) (netPay * 100) / 100.0; grossPay = (int) (grossPay * 100) / 100.0; federalWitholding = (int) (federalWitholding * 100) / 100.0; stateWitholding = (int) (stateWitholding *100) / 100.0; /*String output = (null); String output = (null);*/ String output = "Employee Name: " + name + "/nHours Worked: " + hours + "/nPay Rate: $" + payRate + "/nGross Pay: $" + grossPay + "/nDeductions:" + "/n Federal Witholding: $" + federalWitholding + "/n State Witholding : $" + stateWitholding + "/n Total Deductions : $" + witholdings + "/n Net Pay: $"; JOptionPane.showMessageDialog(null, output); }//end main }//end Payroll
String name = ...; int name = ...;
做不到。
将String name
替换String name
String nameString
因为这是您在使用Integer.parseInt
时尝试解析的变量! (并且不要忘记所有其他变量!)
例如
String hoursString
String hours
String hoursString
String payRate
with String payRateString
String federalTaxRate
带有String federalTaxRateString
String stateTaxRate
with String stateTaxRateString
- 你不能编译,因为
name
,hours
,payRate
,….变量被声明两次。 将每个更改为另一个名称 - 你的
parseInt
,parseDouble
语句不好,因为输入可能没有正确的格式(字母表或其他东西)。 因此,您需要使用try/catch
来validation输入 -
witholdings = (int) (witholdings * 100) /100.0;
这不是保持2位数格式的方法。 读这个 - 尝试使用更好的IDE。 如果您是java新手,请查看jcreator或bluej
在一个方法中不能有两个相同的变量名。 在您的代码中,您有许多重复变量,就像下面的变量一样。 在同一方法中不能有两个name
变量。
String name = JOptionPane.showInputDialog ("Employee's Name: "); int name = Integer.parseInt(nameString);
如果你像Eclipse一样使用任何IDE for Java,你可以轻松地解决这些编译问题,而不是Textpad。