2011-02-01 8 views
2

私は、今すぐ希望の結果を得るためにしばらくの間nextfactorメソッドを変更しようとしてきました。基本的には、2を除いてすべての偶数を除外することになっていますが、まだそれを行うことはできません。クラスのコードは次のとおりです。どんな助けもありがとうございます。よろしくJavaファクタージェネレータープログラムnextfactorメソッド

public class FactorGenerator 
{ 
    private int number; 

    public FactorGenerator(int num) 
{ 
    // initialise instance variables 
    number = num; 
    if (number <= 2) { 
     System.out.println("Wrong argument"); 
    } 
} 

    public boolean hasMoreFactors() 
{ 
    if (number >= 2) { 
     return true; 
    } else { 
     return false; 
    } 
    // return (number >= 2); 
} 

    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; 

if(number % nextFactor == 0) 

    while (! isDivisible(triedFactor)) { 
     triedFactor = triedFactor+1; 
    } 
    number = number/triedFactor; 
    return triedFactor; 
} 
     } 
+1

Plsは、(x)がtrueを返す場合、 'のような構成により、プログラムを難読化止めます。それ以外の場合はfalseを返します。 'triedFactor = triedFactor == 2のようなもの? 3:triedFactor + 2;はあなたの問題を解決しますが、プログラムはひどいままです。 – maaartinus

答えて

-3
Exclude all even except 2 ? This is code 

public ArrayList GetExeptEven(int upperBound){ 
    ArrayList list=new ArrayList(); 
    list.add(1); 
    list.add(2); 
    for(int i=3;i<=upperBound;i=i+2) 
    list.add(i); 

    return list; 
    } 
+0

私たちはこのメソッドを修正することになっています。他に何もない。 – robert

+0

あなたのコードにいくつかの問題があります(それは、オペアンプが求めているものではありません)。 - エラーチェックはありません。 upperBoundが1の場合はどうなりますか?あなたは[1,2]を返すが、それは[1]だったはずである。また、0または負の数はどうですか? IllegalArgumentExceptionをスローしたはずのところで[1,2]を返します。 - コレクションを使用している場合は、ジェネリックも使用するといいでしょう。具体的な実装の代わりにインターフェイスを使用する方が良いでしょう。 public List Ge ... { リスト list = new ArrayList ); list.add(1); ... } – Alex

1

使用

triedFactor = triedFactor==2 ? 3 : triedFactor+2; 

代わりに

triedFactor = triedFactor+1; 
1
while (! isDivisible(triedFactor)) { 
    if(triedFactor == 2) { 
     triedFactor = triedFactor+1; 
    } else { 
     triedFactor = triedFactor+2; 
    } 
}