我已经在这个网站上寻找了40多分钟,试图在这个网站上找到可能与我的问题有关的答案,但无济于事。
我被难住了。 我正在尝试将程序转换为 GUI。 我正在使用文本板,当我编译时告诉我变量已经在 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 (e.g., 10: ");
int hours = Integer.parseInt(hoursString);
String payRate = JOptionPane.showInputDialog ("Hourly pay rate (e.g., .6.75: ");
double payRate = Double.parseDouble(payRateString);
String federalTaxRate = JOptionPane.showInputDialog ("Federal tax witholding rate (e.g., .20: ");
double federalTaxRate = Double.parseDouble(federalTaxRateString);
String stateTaxRate = JOptionPane.showInputDialog (" State tax witholding rate (e.g., .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 nameString
因为这是您在使用 Integer.parseInt
时尝试解析的变量!(也不要忘记所有其他变量!
例如
String hours
String hoursString
String payRate
与String payRateString
String federalTaxRate
String federalTaxRateString
String stateTaxRate
String stateTaxRateString
- 您无法编译,因为
name
,hours
,payRate
,...。变量声明两次。将它们中的每一个更改为另一个名称 - 您的
parseInt
,parseDouble
语句不好,因为输入的格式可能不正确(字母或其他)。因此,您需要使用try/catch
来验证您的输入 -
witholdings = (int) (witholdings * 100) /100.0;
这不是保持 2 位格式的方法。阅读此内容 - 尝试使用更好的 IDE。如果你是Java的新手,看看jcreator或bluej
一个方法中不能有两个相同的变量名。在您的代码中,您有许多重复的变量,如下所示。同一方法中不能有两个name
变量。
String name = JOptionPane.showInputDialog ("Employee's Name: ");
int name = Integer.parseInt(nameString);
如果您使用任何JavaIDE(如Eclipse),则可以轻松解决此类编译问题,而不是使用Textpad。