我想在Divisors类中打印我的方法" compute",位于computeDivisor类中。我如何得到除数谁?
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
computeDivisors cD = new computeDivisors();
System.out.println("Enter an integer: ");
int num = s.nextInt();
System.out.println("The divisors of " + num + " are: ");
cD.compute(); //Why doesn't it print?
s.close();
}
-
public void compute(){
for (i = 2; i <= num / 2; i++) {
if (num % i == 0) {
System.out.print(i + " , ");
}
}
}
}
答案 0 :(得分:1)
您需要将方法所需的数据作为参数传递:
public void compute(int num){
for (i = 2; i <= num / 2; i++) {
if (num % i == 0) {
System.out.print(i + " , ");
}
}
然后使用该参数调用该方法:
cD.compute(num);
如果我可以添加设计注释:最好返回计算值而不是从计算函数中打印它。函数应该做一件事,在这种情况下,有一件事是计算一个值。考虑一下如果将来你想要计算这个值并在其他计算中使用它或者将它显示在STDOUT之外的某个地方会发生什么 - 你必须重写这个功能。如果您返回该值,然后在返回时使用它执行任何操作,则可以使程序更加灵活。
答案 1 :(得分:0)
因为num
整数超出了方法范围。您必须使用num
变量作为参数。
换句话说,num
变量在方法中不存在。
答案 2 :(得分:0)
看起来num
变量甚至没有传递给compute()
方法。另外 - 我们看不到Divisors
,也看不到computeDivisor
类(应该命名为ComputeDivisor
)。