创建因子生成器程序

时间:2014-04-11 19:28:44

标签: java

好的,所以我在学校里一直在研究这个项目大约一个星期,我似乎无法弄清楚为什么,但大多数数字都有效,但出于某些原因,36或108之类的数字不会。我想知道是否有人能发现原因。谢谢!

public class FactorGenerator {
    public FactorGenerator(int a) {
        number = a;
        factor = 2;

    }

    public int nextFactor() // Finds the next factor
    {
        number = (number / factor);
        return factor;

    }

    public boolean hasMoreFactors() // Uses loops and decisions to find if there
                                    // are more factors
    {
        boolean hasMoreFactors = false;
        done = false;
        if (factor < number) {
            while (!done) {
                if (number % factor != 0) {
                    factor++;
                }

                else {
                    done = true;
                    hasMoreFactors = true;
                }
            }
        }
        return hasMoreFactors;
    }

    private int number; // Instance Fields
    private int factor;
    private boolean done;
}

1 个答案:

答案 0 :(得分:1)

你非常接近!您无需修改​​number中的nextFactor()变量,只需增加factor变量:

public int nextFactor()
{
    return factor++;
}

进行更改,运行此:

FactorGenerator gen = new FactorGenerator(36);
while (gen.hasMoreFactors())
    System.out.println(gen.nextFactor());

的产率:

  

2

     

3

     

4

     

6

     

9

     

12

     

18

     

36

此输出省略了因子1。如果您在factor构造函数中将1初始化为FactorGenerator,那么您将获得完整的因子列表。