从Java方法返回中不包括特定整数



我刚刚启动Java,并编写了一个简单的程序来返回输入数字的因素。有两个类别,一个测试仪,一个您在下面看到的一类。

不幸的是,我的输出,说如果我输入150,则为2、3、0、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;
    }   
}

快速修复。您需要在此处循环(要跳过所有不明确分配Y的因素):

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

这样:

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

@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();
}

最新更新