public class MyPayroll3 {
//Declare variable
static String firstName, lastName, course;
static String[] args = {};
static double hourlyRate, stateTaxRate, federalTaxRate, ficaRate, stateTaxTotal, federalTaxTotal, ficaTotal, regularPay,overtimePay, grossPay, netPay;
static int hoursWorked;
public static void main(String[] args) {
getCommandLineArguments(args);
calculations();
}
public static void getCommandLineArguments(String [] args){
//Assign command-line arguments to variables
int k = args[0].indexOf(" ");
firstName = args[0].substring(0,k);
lastName = args[0].substring(k + 1);
course = args[1];
hoursWorked = Integer.parseInt(args[2]);
hourlyRate = Double.parseDouble(args[3]);
stateTaxRate = Double.parseDouble(args[4]);
federalTaxRate = Double.parseDouble(args[5]);
ficaRate = Double.parseDouble(args[6]);
}
//Calculate taxes and income
public static void calculations() {
stateTaxTotal = grossPay - (grossPay*stateTaxRate);
federalTaxTotal = grossPay - (grossPay*federalTaxRate);
ficaTotal = grossPay - (grossPay*ficaRate);
double taxes = stateTaxTotal + federalTaxTotal + ficaTotal;
regularPay = (hoursWorked * hourlyRate) - overtimePay;
overtimePay = (hoursWorked % 40) * hourlyRate(1.5);
grossPay = regularPay + overtimePay;
netPay = grossPay - taxes;
}
}
问题是在以“overtimePay =”开头的底线。它说“找不到符号”,并指出hourlyRate。我做了它一个全局变量,我不知道现在该做什么。
你不会有一个名为hourlyRate
方法。如果一个标识符后放置括号,编译器假定它是一种方法,通过1.5传递1.5
到它,而不是乘法。
如果您打算在1.5倍增,包括括号中不起作用了一些正常的数学符号;乘法运算*
必须是明确的。
更改
overtimePay = (hoursWorked % 40) * hourlyRate(1.5);
至
overtimePay = (hoursWorked % 40) * hourlyRate * 1.5;
为了说明hoursWorked
至少是80,你可能希望只减去40从hoursWorked
,而不是使用Mod运算符。