错误表示在尝试将字符串转换为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

  1. 你不能编译,因为namehourspayRate ,….变量被声明两次。 将每个更改为另一个名称
  2. 你的parseIntparseDouble语句不好,因为输入可能没有正确的格式(字母表或其他东西)。 因此,您需要使用try/catch来validation输入
  3. witholdings = (int) (witholdings * 100) /100.0; 这不是保持2位数格式的方法。 读这个
  4. 尝试使用更好的IDE。 如果您是java新手,请查看jcreator或bluej

在一个方法中不能有两个相同的变量名。 在您的代码中,您有许多重复变量,就像下面的变量一样。 在同一方法中不能有两个name变量。

 String name = JOptionPane.showInputDialog ("Employee's Name: "); int name = Integer.parseInt(nameString); 

如果你像Eclipse一样使用任何IDE for Java,你可以轻松地解决这些编译问题,而不是Textpad。