我正在学习编程课程并设置有关计算薪水的代码。除了第11行,一切正常。我最终得到了stackoverflow错误。
但是当我删除这行代码时
double weeksWages = pay(50, 10); // weeksWages is 550
错误消失了,但是在运行程序时,我最终会得到10而不是550。这可能很容易修复,但不确定。谢谢!
以下是完整代码:
import java.util.Scanner;
import static java.lang.System.out;
public class ComputePayCheck {
static Scanner in = new Scanner(System.in);
public static double pay(int hours, double hourlyRate) {
int otHours = (hours > 40) ? hours - 40 : 0;
double weeksWages = pay(50, 10); // weeksWages is 550
return otHours;
}
public static void main(String[] args) {
out.print("Enter hours worked: ");
int hours = in.nextInt();
out.print("Enter hourly rate: ");
double hourlyRate = in.nextDouble();
out.print("Week's Salary is: " + pay(hours, hourlyRate));
}
}
答案 0 :(得分:2)
您正在获得堆栈溢出,因为您的pay
函数递归调用自身,看不到任何结束。我不确定您的方法的确切预期行为是什么,但请尝试这样的事情。
public static double pay(int hours, double hourlyRate) {
int otHours = (hours > 40) ? hours - 40 : 0;
return hourlyRate * otHours;
}