簡體   English   中英

代碼行上的StackOverFlow錯誤

[英]StackOverFlow Error on line of code

我正在上編程班,並設置有關計算薪水的代碼。 除第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));


  }

}

之所以會出現堆棧溢出,是因為您的pay函數正在遞歸地調用自身而沒有盡頭。 我不確定您的方法的確切預期行為是什么,但是嘗試這樣的方法。

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM