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()中打印因子。归还它们
testnum%i==0
最终肯定会返回true,因此如果您删除i您的hasMoreFactor()
方法在被调用四次(以及nextFactor
分别返回2、3、5、5)和第五次调用时应该返回false。YourhasMoreFactor()
方法在调用四次(和nextFactor
分别返回2、3、5、5)和第五次调用时应该返回false。唯一的问题是,对于这个类,我们必须使用教师的测试仪。尽管这可能很愚蠢,但这是必须的。那么约翰的解决方案就是出路。唯一的问题是,对于全班来说,我们必须使用老师的测试仪。尽管这可能很愚蠢,但这是必须的。那么约翰的解决方案就是了。facepalm哇,谢谢。我不知道为什么一开始我完全忽略了I++。还返回i而不是打印它要好得多。在else
中使用i++
的原始代码很好;你需要它来正确处理重复因子。将其移动到for
循环中现在只起作用,因为每次调用nextFactor()
.facepalm哇,谢谢。我不知道为什么一开始我完全忽略了I++。还返回i而不是打印它要好得多。在else
中使用i++
的原始代码很好;你需要它来正确处理重复因子。现在只在for
循环中移动它,因为每次调用nextFactor()
时循环都会重新启动。