我创建了一个方法来测试数字是否是另一个数字的因子。
private static boolean isFactor( int n, int d )
{
if (n % d == 0)
return true;
else
return false;
}
现在我被指示调用这个方法,“isFactor”,在我创建的另一种方法中如下:
private static void printFactors( int n )
{
int divisor = 1;
while (divisor <= n)
{
isFactor(n, divisor);
if (isFactor == true)
divisor++;
else
System.out.println("No factors found.");
System.out.println("The factors of " + n + " are: " + divisor );
}
}
问题是我在运行时收到一条错误消息,说java找不到符号。我如何做到这一点,以便我的方法可以找到它的对应物?
答案 0 :(得分:5)
问题是我在运行时收到一条错误消息,说java找不到符号
是的,这一点在此行中注明:
if (isFactor == true)
因为没有isFactor
变量。相反,您应该在该行中调用该方法:
//isFactor(n, divisor);
if (isFactor(n, divisor)) //no need to put == true
注意:虽然上面的声明使您的代码可编辑,但它不会使其按预期工作。您应该将不同变量中的除数和除数的数量分开。此外,您应该只打印消息找不到因素。当且仅当您发现该数字根本没有除数时,而不是每次测试除数时都是如此。
答案 1 :(得分:1)
您已将符号isFactor
用作方法名称和变量名称。试试这个:
boolean result = isFactor(n, divisor);
if (result) { // No need to compare to true since it is boolean
...
}
答案 2 :(得分:0)
将来解决这类问题的最简单方法是查看堆栈跟踪:
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
isFactor cannot be resolved to a variable
at stack.Main.printFactors(Main.java:24)
at stack.Main.main(Main.java:7)
这告诉我问题出在第24行(由第7行调用):
ln 7: printFactors(100);
...
ln 18: private static void printFactors( int n )
...
ln 24: if (isFactor == true)
此外,任何体面的IDE(例如:Eclipse)都可以让您在不必运行程序的情况下找到这些类型的语法错误。