我得到了一個分配創建一個顯示一至100.下面是實際的分配完美的整數的程序:爲什麼我的程序不能計算完美的數字?
創建一個顯示所有完美的整數高達100完美的整數是一個PerfectIntegers應用數字等於除自身以外的所有因素的總和。例如,6是一個完美的數字,因爲1 + 2 + 3 = 6。應用程序應該包含一個布爾方法isPerfect()。
我想和這個想出了:
import java.util.ArrayList;
public class PerfectIntegers {
public static boolean isPerfect(int a){
ArrayList<Integer> factors = new ArrayList<Integer>();
int sum=0;
boolean is;
for (int i=1; i<=100; i++){
double r=a/i;
if (r%1==0){
factors.add(i);
}
}for (int i=0;i<factors.size();i++){
sum+=factors.get(i);
}if (sum==a){
is=true;
}else{
is=false;
}return is;
}
public static void getInts(){
for (int i=2; i<=100; i++){
boolean is=isPerfect(i);
if (is!=false){
System.out.print(i+" ");
}
}
}
public static void main(String[] args) {
getInts();
}
}
Eclipse中沒有表現出任何錯誤,但是當我嘗試運行它,該程序被終止,我什麼也沒得到。
問題可能與double r
,因爲它沒有100%的時間分配正確。
也許'是'一直是錯誤的。你嘗試過調試嗎? –