StackOverFlow代码行错误

时间:2016-01-31 01:00:31

标签: java stack-overflow

我正在学习编程课程并设置有关计算薪水的代码。除了第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));


  }

}

1 个答案:

答案 0 :(得分:2)

您正在获得堆栈溢出,因为您的pay函数递归调用自身,看不到任何结束。我不确定您的方法的确切预期行为是什么,但请尝试这样的事情。

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