一直在困扰我的大脑数小时试图解决这个问题。
我的主要方法是:
public static void main(String [] args)
{
double payRate;
double grossPay;
double netPay;
int hours;
Scanner input = new Scanner(System.in);
System.out.println("Welcome to the Pay Roll Program");
printDescription();
System.out.print("Please input the pay per hour: ");
payRate = input.nextDouble();
System.out.println("\nPlease input the pay per hour: ");
hours = input.nextInt();
System.out.println("\n");
netPay = computePaycheck(netPay);
System.out.println("The net pay is $" + (netPay));
System.out.println("We hope you enjoyed this program");
System.exit(0);
和计算netPay的方法
public static double computePaycheck(double payRate, int hours)
{
double grossPay = computePaycheck(payRate*hours);
double netPay = (grossPay - (grossPay *.15));
return netPay;
}
但是我收到错误“PayCheck中的computePaycheck(double,int)无法应用于(double)”
我有点理解这一点,但我不能为我的生活找到一个补救措施。
答案 0 :(得分:2)
1)您正在调用具有2个参数的函数,同时仅传递1.这将导致编译错误。
2)当你从内部调用computePaycheck时会循环并导致堆栈溢出。
答案 1 :(得分:0)
netPay = computePaycheck(netPay);
public static double computePaycheck(double payRate,int hours)
PayCheck中的“computePaycheck(double,int)无法应用于(double)”
您的方法有两个参数,一个是double和一个int。
你只能用这两个来打电话(你错过了通话中的小时数)。
netPay = computePaycheck(payRate,hours);
double grossPay = payRate * hours;
答案 2 :(得分:0)
在computePaycheck
方法中,您有以下一行:
double grossPay = computePaycheck(payRate*hours);
这是将一个参数(payRate
和hours
的乘积)传递给computePaycheck
函数,这需要两个参数。看起来你想说:
double grossPay = computePaycheck(payRate, hours);
但你需要小心!这将导致您的程序无限重复!您需要确定如何在不调用此函数的情况下计算总工资,因为如果您在其自身内递归调用它,则没有条件可以从中返回。
答案 3 :(得分:0)
您的方法有两个参数 - double payRate
和int hours
,但在主方法中调用double
时,您只需指定computePaycheck
。
目前尚不清楚您打算发生什么,但不匹配的参数会让您知道您的计划有什么问题。
答案 4 :(得分:0)
computePaycheck
方法的第一个语句使用单个参数(double)调用computePaycheck
,而computePaycheck使用2个参数(double和int)。这就是你的代码无法编译的原因。
如果你通过使用double grossPay = computePaycheck(payRate, hours);
来“修复”这个,那么这将编译但是你将获得无限递归!你不是只想做double grossPay = payRate*hours;
吗?