从java方法返回排除特定整数

时间:2017-02-21 06:33:27

标签: java

我刚刚开始使用java,并编写了一个简单的程序来返回输入数字的因子。有两个类,一个测试人员和一个你在下面看到的人。

不幸的是,我的输出,比如我输入150,是2,3,5,5,5。

我知道为什么会这样;当局部变量q = i时,我们显然得到2,3,5,5,但是当不满足第一个if语句中的条件时,q被读为0。

有没有办法从输出中排除特定的整数,在本例中为0?我几个小时都在努力解决一个简单的问题,所以很明显我没有看到什么。

我意识到有更简单的方法来编写这个程序,但所有方法都必须保持原样......

public class FactorGenerator {

    private int y;
    private int i;


    public FactorGenerator(int numberToFactor)
    {
        y = numberToFactor;
        i = 2;
    }

    public boolean hasMoreFactors()
    {
        if (i <= y)
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public int nextFactor()
    {

        int q=0;

        if( y % i != 0)
            i++;

        if( y % i == 0)
            {
                y = y / i;
                q = i;
            }           
        return q;
    }   
}

2 个答案:

答案 0 :(得分:1)

快速修复。你需要一个while循环(以跳过所有不明确划分y的因素):

if( y % i != 0)
        i++;

像这样:

while( y % i != 0){
        i++;
}

答案 1 :(得分:1)

@MicD建议正确答案

另一种方式:

由于你有零问题,所以只检查q不等于零

    int nextFactor()
{

    int q=0;

    if( y % i != 0)
        i++;

    if( y % i == 0)
        {
            y = y / i;
            q = i;
        }
    if(q!=0)
        return q;
    else
        nextFactor();
}