如何避免返回零
How to avoid returning a zero
我的代码可以正常工作,它是素因数分解方法 class 和测试器。它可以很好地打印出代码,但我不得不 return 一个零值,因为该方法是一个整数方法。
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;
}
}
这是我正在使用的测试仪,不能更改,必须保持不变:
import java.util.Scanner;
public class FactorPrinter{
public static void main(String [] args){
Scanner in = new Scanner(System.in);
System.out.print("Enter a number to Factor:");
int numberToFactor = in.nextInt();
System.out.println("You chose: "+numberToFactor+" to factor.");
FactorGenerator fg = new FactorGenerator(numberToFactor);
while (fg.hasMoreFactors())
System.out.println(fg.nextFactor());
}
}
当我输入 150 时,它会打印 2,3,5,5,0
有什么方法可以删除 0 吗?
所有需要的打印都在 nextFactor
中完成。所以不要打印 return 代码。改变这个:
System.out.println(fg.nextFactor());
通过这个:
fg.nextFactor();
也就是说,nextFactor
这个名字是错误的。即使它产生了结果,顾名思义它是一个生成器,它应该在每次调用时 return 每个因子,num
成员方法提供了记忆效应。
所以按照我的建议行事,但这可能不符合问题的精神。如果您必须 examine/store 这些因素,而不仅仅是打印它们,约翰的回答会更好。
不要打印 nextFactor()
中的因数。 Return 他们
public int nextFactor() {
for (int i = 2; ; i++) {
if (num % i == 0) {
num /= i;
//System.out.println(i);
return i;
}
}
}
测试 num % i == 0
最终保证 return 为真,因此如果您从 for
循环中删除 i <= num
测试,编译器将不需要您在末尾添加return 0
。
您的 hasMoreFactor()
方法在被调用四次(并且 nextFactor
分别返回 2、3、5、5)并被第五次调用时应该返回 false。
我的代码可以正常工作,它是素因数分解方法 class 和测试器。它可以很好地打印出代码,但我不得不 return 一个零值,因为该方法是一个整数方法。
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;
}
}
这是我正在使用的测试仪,不能更改,必须保持不变:
import java.util.Scanner;
public class FactorPrinter{
public static void main(String [] args){
Scanner in = new Scanner(System.in);
System.out.print("Enter a number to Factor:");
int numberToFactor = in.nextInt();
System.out.println("You chose: "+numberToFactor+" to factor.");
FactorGenerator fg = new FactorGenerator(numberToFactor);
while (fg.hasMoreFactors())
System.out.println(fg.nextFactor());
}
}
当我输入 150 时,它会打印 2,3,5,5,0 有什么方法可以删除 0 吗?
所有需要的打印都在 nextFactor
中完成。所以不要打印 return 代码。改变这个:
System.out.println(fg.nextFactor());
通过这个:
fg.nextFactor();
也就是说,nextFactor
这个名字是错误的。即使它产生了结果,顾名思义它是一个生成器,它应该在每次调用时 return 每个因子,num
成员方法提供了记忆效应。
所以按照我的建议行事,但这可能不符合问题的精神。如果您必须 examine/store 这些因素,而不仅仅是打印它们,约翰的回答会更好。
不要打印 nextFactor()
中的因数。 Return 他们
public int nextFactor() {
for (int i = 2; ; i++) {
if (num % i == 0) {
num /= i;
//System.out.println(i);
return i;
}
}
}
测试 num % i == 0
最终保证 return 为真,因此如果您从 for
循环中删除 i <= num
测试,编译器将不需要您在末尾添加return 0
。
您的 hasMoreFactor()
方法在被调用四次(并且 nextFactor
分别返回 2、3、5、5)并被第五次调用时应该返回 false。