繁体   English   中英

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

[英](double,int) cannot be applied to (double)

几个小时以来,我一直在绞尽脑汁想弄清楚这一点。

我的主要方法是:

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

我有点理解这一点,但我终生无法找到补救措施。

1)您正在调用具有2个参数的函数,同时仅传递1.这将导致编译错误。

2)当你从内部调用computePaycheck时会循环并导致堆栈溢出。

很明显,您设置了 2 个参数,但从主类中您只调用了一个参数。 您应该找到一种同时调用 2 个参数的方法。

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 *小时;

在您的computePaycheck方法中,您有以下行:

double grossPay = computePaycheck(payRate*hours);

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

double grossPay = computePaycheck(payRate, hours);

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

您的方法有两个参数 - double payRateint hours ,但是当您在main方法中调用computePaycheck时,您只指定了一个double

目前尚不清楚您打算发生什么,但不匹配的参数会让您知道您的程序出了什么问题。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM