(double,int)不能应用于(double)

时间:2011-11-17 04:59:38

标签: java

一直在困扰我的大脑数小时试图解决这个问题。

我的主要方法是:

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)”

我有点理解这一点,但我不能为我的生活找到一个补救措施。

5 个答案:

答案 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);

这是将一个参数(payRatehours的乘积)传递给computePaycheck函数,这需要两个参数。看起来你想说:

double grossPay = computePaycheck(payRate, hours);

但你需要小心!这将导致您的程序无限重复!您需要确定如何在不调用此函数的情况下计算总工资,因为如果您在其自身内递归调用它,则没有条件可以从中返回。

答案 3 :(得分:0)

您的方法有两个参数 - double payRateint hours,但在主方法中调用double时,您只需指定computePaycheck

目前尚不清楚您打算发生什么,但不匹配的参数会让您知道您的计划有什么问题。

答案 4 :(得分:0)

computePaycheck方法的第一个语句使用单个参数(double)调用computePaycheck,而computePaycheck使用2个参数(double和int)。这就是你的代码无法编译的原因。

如果你通过使用double grossPay = computePaycheck(payRate, hours);来“修复”这个,那么这将编译但是你将获得无限递归!你不是只想做double grossPay = payRate*hours;吗?