代码行上的 StackOverFlow 错误

StackOverFlow Error on line of code

我正在学习编程 class 并设置有关计算薪水的代码。除第 11 行外,一切正常。我最终遇到了 Whosebug 错误。

但是当我删除这行代码时

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


  }

}

您遇到堆栈溢出,因为您的 pay 函数正在递归调用自身,看不到尽头。我不确定你的方法的确切预期行为是什么,但试试这样的方法。

public static double pay(int hours, double hourlyRate) {
 int otHours = (hours > 40) ? hours - 40 : 0;
 return hourlyRate * otHours;
}