加班计划有问题

时间:2017-11-30 17:58:11

标签: java

我想我做的都是正确的但是我有一个错误。非常困惑。 错误:overtime.java:10:错误:变量pay可能尚未初始化          displayResults(收费);

代码:

import java.util.Scanner;

public class Overtime {    
    public static void main(String[] args) {
        int hours;
        double rate, pay;
        Scanner in = new Scanner(System.in);
        displayResults(pay);
        System.out.println();
        System.out.print( "Enter how many hours worked: " );
        hours = in.nextInt();
        System.out.print( "Enter hourly rate: " );
        rate = in.nextDouble();
    }

    public double calculatePay( int hours, double rate, double pay ) {
        if ( hours > 40 ) { 
            int extraHours = hours - 40;
            pay = ( 40 * rate ) + ( extraHours * rate * 1.5);
        } else
            pay = hours * rate;
        return pay;
    }

    public static void displayResults(double pay) {
        System.out.printf( "\nGross Salary: %f", pay);
    }
}

3 个答案:

答案 0 :(得分:0)

main中的代码必须重新排序:

public static void main(String[] args) {
    int hours;
    double rate, pay;
    Scanner in = new Scanner(System.in);

    System.out.print( "Enter how many hours worked: " );
    hours = in.nextInt();

    System.out.print( "Enter hourly rate: " );
    rate = in.nextDouble();

    pay = ;// call calculatePay here

    displayResults(pay);
}

您必须删除pay方法的calculatePay参数。它的声明应该是

public static double calculatePay( int hours, double rate )

答案 1 :(得分:0)

您收到此错误的原因是您未向变量pay分配任何值,并且您调用了需要此变量作为参数的方法displayResults()。首先,您应该使用pay计算calculatePay值(但是您应该从传递给此方法的参数列表中删除double pay,因为不需要将其放在那里)。

使用calculatePay()进行计算并将结果保存在pay变量后,您可以毫无问题地致电displayResults()

另一个问题是calculatePay()需要static你的方法都应该在main()方法体之外声明(我的答案的大胆部分是不再相关,因为看起来很糟糕的缩进使我有点困惑,我认为方法是在main()方法中声明的。

答案 2 :(得分:0)

这看起来有点像家庭作业。所以我只提供指导:

  1. 首先初始化所有变量并将其设置为值。 (例如,双倍支付= 1;)并放弃扫描仪。

  2. 一旦这样做 - 添加扫描仪并使用System.out.format(...)显示所有变量。

  3. 一旦vars正确显示(第2点)和(1)工作 - 连接扫描仪设置的变量和其余代码

  4. 祝你好运! : - )