簡體   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