我想我做的都是正确的但是我有一个错误。非常困惑。 错误: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);
}
}
答案 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;)并放弃扫描仪。
一旦这样做 - 添加扫描仪并使用System.out.format(...)显示所有变量。
一旦vars正确显示(第2点)和(1)工作 - 连接扫描仪设置的变量和其余代码