我刚刚开始使用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;
}
}
答案 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();
}