2011-02-01 9 views
0

すべての要素を配列リストとして返すメソッドを作成するように求められました。私はいくつかのために固執してきたので、どんな助けも高く評価されます。代わりに、この行にそれらをプリントアウトのすべての要素を出力するJava配列リスト

/** 
* Determines whether the number has factors. 
* 
* @return true iff the number has a factor 
*/ 
public boolean hasMoreFactors() 
{ 
    if (number >= 2) { 
     return true; 
    } else { 
     return false; 
    } 
    // return (number >= 2); 
} 

/** 
* Is number divisible by a given other number? 
* 
* @param otherNumber the number we test whether it divides the object's number 
* @return true iff the number is divisible by otherNumber 
*/ 
public boolean isDivisible(int otherNumber) 
{ 
    if (number % otherNumber == 0) { 
     return true; 
    } else { 
     return false; 
    } 
} 

/** 
* Determine next factor. 
* pre-condition: call only if hasMoreFactors 
* returns true 
* 
* @return a factor of the object's number 
*/ 
public int nextFactor() 
{ 
    int triedFactor = 2; 
    while (! isDivisible(triedFactor)) { 
     triedFactor = triedFactor+1; 

    } 
    number = number/triedFactor; 
    return triedFactor; 
} 

/** 
* Print all factors of the generator's number on standard output. 
*/ 
public void printAllFactors() 
{ 
    System.out.println("Factors of " + number); 
    while (hasMoreFactors()) { 
     System.out.println(nextFactor()); 
    } 
    System.out.println("That's it."); 
} 

/** 
* Main method: Read an integer and print all its factors. 
*/ 
public static void main(String[] args) 
{ 
    System.out.print("Please enter a number greater or equal 2: "); 
    Scanner sc = new Scanner(System.in); 
    int num = sc.nextInt(); 
    System.out.println(); 
    FactorGenerator gen = new FactorGenerator(num); 
    gen.printAllFactors(); 
} 

}

+0

ちょっと手を加えてください。どうしますか? :D – Skurmedel

+0

まず、ifで囲む代わりに 'return BooleanExpression;'だけを返します。 – unholysampler

+0

["宿題タグは、他のいわゆる 'メタ'タグのように、現在は推奨されていません。]](http://meta.stackexchange.com/q/10812) – Will

答えて

1

System.out.println(nextFactor()); 

のArrayListを作成する:

List<Integer> list = new ArrayList<Integer>(); 

及びそれに格納:

list.add(nextFactor()); 
+0

リストを返すのではなく、それぞれの要因に応じてしかし、OPの主な関心事は正しい結果を得ていると思う。 – Ray

+0

ここには更新されたコードがあります。 – robert

+0

@Rayにクラスなどを追加するのを忘れました。OPの質問は、Arraylistを返すことです。 OPには、アルゴリズムそのものに関する懸念事項は言及されていません。 – dogbane

0

数字が同じ要素を複数回持つ場合は、見逃したように見えます。たとえば、4 = 2 * 2ですが、2を試した後、増分して3を試してください。もはや要素にならなくなるまで、各候補を試し続けなければなりません。

関連する問題