在嘗試確定給定整數是否可以被 1 到 20 之間的每個數字整除時,開發人員遇到一個錯誤消息,內容為“並非所有代碼路徑都返回值”。
檢查下面的代碼後,編譯器錯誤就顯而易見了:
<code class="language-c#">{ for(int j = 1; j <= 20; j++) { if(num % j != 0) { return false; } else if(num % j == 0 && num == 20) { return true; } } }</code>
問題源於函數體中只有兩個 return 語句。這些語句處理整數不能被整除或可以被 1 到 20 之間的全部數字整除的情況。但是,編譯器要求函數中的所有可能的執行路徑都返回值。
為了解決此錯誤,需要向代碼中添加另一個 return 語句來處理其餘的執行路徑。此路徑表示循環完成而從未找到 1 到 20 之間的任何可以整除輸入整數的數字的情況。
下面的代碼包含缺少的 return 語句,確保所有可能的代碼路徑現在都返回值:
<code class="language-c#">{ for(int j = 1; j <= 20; j++) { if(num % j != 0) { return false; } else if(num % j == 0 && num == 20) { return true; } } return true; //添加了缺少的 return 语句, 此处应为true,表示可以被1-20整除 }</code>
改進後的解決方案說明: 原始代碼中的else if(num % j == 0 && num == 20)
條件過於嚴格。 只有當 num
等於 20 且同時能被 j
整除時才返回 true
。 如果 num
是 20 的倍數但大於 20,則代碼不會返回任何值。 因此,更正後的代碼應該在循環結束後,默認返回 true
,表示該數可以被 1 到 20 之間的每個數字整除。 只有當循環中發現不能整除的情況時才返回 false
。
以上是為什麼我的C#代碼產生'不是所有代碼路徑返回值”錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!