Java 加班计划的麻烦

Java 加班计划的麻烦,java,Java,我想我都做对了,但是我有个错误。非常困惑。 错误:加班。java:10:错误:可变薪酬可能尚未初始化 显示结果(支付) 代码: import java.util.Scanner; public class Overtime { public static void main(String[] args) { int hours; double rate, pay; Scanner in = new Scanner(System.i

我想我都做对了,但是我有个错误。非常困惑。 错误:加班。java:10:错误:可变薪酬可能尚未初始化 显示结果(支付)

代码:

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);
    }
}

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);
}
您必须删除
calculatePay
方法的
pay
参数。它的声明应该是

public static double calculatePay( int hours, double rate )

出现此错误的原因是您没有为变量
pay
指定任何值,并且调用了一个方法
displayResults()
,该方法需要此变量作为参数。首先,您应该使用
calculatePay
计算
pay
值(但是您应该从传递给此方法的参数列表中删除
double pay
,因为不需要将它放在那里)

使用
calculatePay()
进行计算并将其结果放入
pay
变量后,您可以毫无问题地调用
displayResults()


另一个问题是,
calculatePay()
需要使
静态
这两个方法都应该在main()方法体之外声明(我回答的粗体部分不再相关,因为外观不好的缩进让我有点困惑,我认为方法是在
main()中声明的)
方法)

这看起来有点像家庭作业。因此,Iam仅提供指导:

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

  • 一旦工作正常-添加扫描仪并使用System.out.format(…)显示所有变量

  • 一旦变量正确显示(第2点)和(1点)起作用,将扫描器设置的变量与代码的其余部分连接起来


  • 祝你好运!:-)

    在将
    pay
    设置为值之前,请调用
    displayResults(pay)
    ;这真是一团糟。应用适当的缩进以使其更易于阅读。请遵循Java命名约定;类名称应始终使用PascalCase.double pay=0;(快速修复)按照你告诉我的做了,我现在得到了这个错误:超时。java:15:error:非静态方法calculatePay(int,double,double)不能从静态context@unattainable啊,是的,最后一个“bug”,让它静止,编辑answer@unattainable错误提示您没有从方法中删除最后一个参数(第二个双参数)。