Java 如何避免返回零

Java 如何避免返回零,java,int,factorization,Java,Int,Factorization,我已经让代码正常工作了,它是一个素因子分解方法类和测试程序。它可以很好地输出代码,但我不得不返回一个零值,因为该方法是一个整数方法 public class FactorGenerator{ private int num; public FactorGenerator(int numberToFactor){ num = numberToFactor; } public int nextFactor(){ for(int i = 2; i <= num;){

我已经让代码正常工作了,它是一个素因子分解方法类和测试程序。它可以很好地输出代码,但我不得不返回一个零值,因为该方法是一个整数方法

public class FactorGenerator{
private int num;

public FactorGenerator(int numberToFactor){
    num = numberToFactor;
}
public int nextFactor(){
    for(int i = 2; i <= num;){
        if (num%i==0){
            num = num/i;
            System.out.println(i);
        }
        else{
            i++;
        }
    }
return 0;
}
public boolean hasMoreFactors(){
    for(int i = 1; i < num; i++){
        if(num % i == 0){
            return true;
        }
    }
    return false;
    }
}
当我输入150时,它会打印2,3,5,5,0
是否仍要删除0?

所有必需的打印都在
nextFactor
中完成。所以不要打印返回码。更改此项:

System.out.println(fg.nextFactor());
据此:

fg.nextFactor();
也就是说,
nextFactor
的名字就没有名字了。即使它产生了结果,名称也表明它是一个生成器,应该在每次调用时返回每个因子,内存效应由
num
member方法提供。
所以按照我的建议去做是可行的,但这可能不符合问题的本质。如果您必须检查/存储这些因素,而不仅仅是打印它们,John的答案会更好。

所有必需的打印都在
nextFactor
中完成。所以不要打印返回码。更改此项:

System.out.println(fg.nextFactor());
据此:

fg.nextFactor();
也就是说,
nextFactor
的名字就没有名字了。即使它产生了结果,名称也表明它是一个生成器,应该在每次调用时返回每个因子,内存效应由
num
member方法提供。 所以按照我的建议去做是可行的,但这可能不符合问题的本质。如果您必须检查/存储因子,而不是只打印它们,John的答案会更好。

不要在
nextFactor()中打印因子。
。归还它们

测试
num%i==0
最终保证返回true,因此如果删除
i则不要在
nextFactor()中打印因子。归还它们


test
num%i==0
最终肯定会返回true,因此如果您删除
i您的
hasMoreFactor()
方法在被调用四次(以及
nextFactor
分别返回2、3、5、5)和第五次调用时应该返回false。

Your
hasMoreFactor()
方法在调用四次(和
nextFactor
分别返回2、3、5、5)和第五次调用时应该返回false。

唯一的问题是,对于这个类,我们必须使用教师的测试仪。尽管这可能很愚蠢,但这是必须的。那么约翰的解决方案就是出路。唯一的问题是,对于全班来说,我们必须使用老师的测试仪。尽管这可能很愚蠢,但这是必须的。那么约翰的解决方案就是了。facepalm哇,谢谢。我不知道为什么一开始我完全忽略了I++。还返回i而不是打印它要好得多。在
else
中使用
i++
的原始代码很好;你需要它来正确处理重复因子。将其移动到
for
循环中现在只起作用,因为每次调用
nextFactor()
.facepalm哇,谢谢。我不知道为什么一开始我完全忽略了I++。还返回i而不是打印它要好得多。在
else
中使用
i++
的原始代码很好;你需要它来正确处理重复因子。现在只在
for
循环中移动它,因为每次调用
nextFactor()
时循环都会重新启动。