
求比一個整數大的最小質數 的題目, 我程式一開始編譯起來最后一個return沒寫 報錯 說缺少回傳值 后來我把前一個刪了補上后一個 可以編譯通過 但是輸出空白
最后我瞎蒙把兩個都寫上去 通過了 也能運算
但是我沒有理解這是為什么 求大神給萌新分析一下
uj5u.com熱心網友回復:
for,while,if...else這些流程控制陳述句,如果控制條件不成立,那就沒法進入流程。編譯器會認為里面的return沒法到達。就會報錯。你把里面的return刪掉,按你的條件,b一直是大于0的,外層回圈變成無限回圈了。你看到的是空白。那是因為程式還在執行。
這種情況,要么在流程里回傳我們需要的值,流程外回傳一個默認值。
或者定義一個回傳變數。在流程里給變數賦值。流程結束后再回傳。不要在流程里回傳。
比如:
int res = 0;
for(...)
{
if(...)
{
res = xxx;
}
else
{
res = ***;
}
}
return res;
uj5u.com熱心網友回復:
因為有return陳述句在,return會強制回傳原來的執行陳述句,所以不管你回圈多么離譜,只要能執行到return陳述句都能跳出來。但是你的程式邏輯一塌糊涂,好好補補基礎知識。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/86139.html
標籤:Java SE
