我刚刚启动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();
}