2015-09-25 53 views
0

該方法將傳遞一個整數並返回字符串「完美」,「缺陷」或「豐富」。 完美數字等於其自身因素總和。 如果一個數字的因素總和小於該數字,則認爲該數字不足。 如果排除其本身的因素總和大於數字,則數字很豐富。 例如,分類(6)「完美」。分類(12)「豐富」 我幾乎已經寫的代碼,但它只能打印出「豐富的。如果沒有我搞砸了?在循環中顯示字符串

public static boolean isFactor(int a, int b){ 
    if(b%a==0) 
     return true; 
    return false; 
} 
public static String classify(int n){ 
    int sum=0; 
    for(int i=1; i<n; i++){ 
     if(isFactor(i,n)); 
     sum=sum+i; 
     } 
    if(sum==n) 
     return "perfect"; 
    else if(sum<n) 
     return "deficient"; 
    else return "abundant"; 
} 

回答

1

因爲你後分號後面的if語句。

刪除分號總和值計算不正確的如果聲明

for(int i=1; i<n; i++){ 
     if(isFactor(i,n)) 
      sum=sum+i; 
} 
0

你有一個分號,如果之後(isFactor(我, N)),所以它是一個,如果有一個空塊,並且總和=總和+始終執行我。

0

你犯了一個粗心的錯誤!問題在這裏:

if(isFactor(i,n)); 
    sum=sum+i; 
} 

你看到那個分號嗎?那就是問題所在! Java中的分號表示空白語句,也就是什麼都沒有。這意味着當isFactor(i, n)返回true時,什麼都不會執行!這也意味着無論如何,sum=sum+i都會被執行。

這個錯誤很難識別。這只是額外的;