2016-01-22 81 views
-2

所以當我編譯它時說它缺少必需的返回值。關於缺少return語句的java bluej

import java.util.*; 
class p19 
{ 
    public static int isPDA(int n) 
    { 
     Scanner ob=new Scanner(System.in); 
     int i,s=0; 
     for(i=1;i<n;i++) 
     { 
      if(n%i==0) 
      { 
       s=s+i; 
      } 
      if(s==n) 
      { 
       return 0; 
      } 
      if(s<n) 
      { 
       return -1; 
      } 
      if(s>n) 
      { 
       return +1; 
      } 
     } 
    } 
} 

回答

0

isPDA必須返回一個整數無論哪個條件在if滿意的方法,但你的控制流語句阻塞返回 ...嘗試組織你的想法一個嘗試是這樣的:

if(s==n) 
    { 
     return 0; 
    } 
    else if(s<n) 
    { 
     return -1; 
    } 
    else 
    { 
     return +1; 
    } 
0

要擴展什麼@ jipr311說,如果參數「n」是< = 1,那麼你就不會進入對於l oop,因此從來沒有擊中其中一個回報聲明。

0

要建立什麼都@ jipr311以及@DBug說,通俗地說,編譯器需要得到保證,無論發生的條件語句中,該方法將返回的東西。這意味着某種程度上,編譯器不關心「if」語句是什麼,只是在這種情況下(如果程序設計正確,這可能不會發生),if語句都沒有執行, 將返回

正如@DBug說,解決方法可以添加一個「其他」語句的如果。這可以確保編譯器以某種方式執行「if」條件中的return語句或「else」條件中的return語句。你目前的代碼不能保證編譯器有任何這樣的事情。