我正在编写一个程序,使用Ramanujan级数来估计pi。在这个系列中,它需要我计算几个表达式的阶乘,我为此编写了一个类。我在之前的作业中使用了这个类,解释了类顶部的测试。当我试图创建阶乘对象来使用Factorial.calculate(nthNum)
时,我的问题开始发挥作用。我已经尝试了我能想到的一切,搜索了许多论坛,回顾了我的笔记,我不明白为什么这个错误不断发生。
.\Ramanujan.java:9: error: cannot find symbol
Factorial f = new Factorial();
^
symbol: class Factorial
location: class Ramanujan
.\Ramanujan.java:9: error: cannot find symbol
Factorial f = new Factorial();
^
symbol: class Factorial
location: class Ramanujan
2 errors
error: compilation failed
如果有人能向我解释为什么找不到这个符号,那将是非常有帮助的。谢谢。
public class Ramanujan {
public static void main (String[] args){
String nthRamNumString = args[0];
int nthRamNum = Integer.parseInt(nthRamNumString);
findRamNum(nthRamNum);
}
public static double findRamNum(int nthNum){
Factorial f = new Factorial();
double factNum = f.calculate(nthNum);
double firstVal = ((2 * Math.sqrt(2)) / 9801);
double piNum = 0;
for (int i = 0; i <= nthNum; i++){
piNum = piNum + (4 * factNum) * (1103 + (26390 * nthNum)) /
(Math.pow(factNum, 4) * (Math.pow(396, 4 * nthNum)));
}
double finalPiVal = (firstVal * piNum);
return 1 / finalPiVal;
}
}
public class Factorial {
public static void main (String[] args){
String value = args[0];
Long n = Long.parseLong(value);
if (n > 20){
System.out.println("Value must be less than 20!");
System.exit(0);
}
else if (n < 0){
System.out.println("Value must be greater than 1!");
System.exit(0);
}
else{
System.out.println(calculate(n));
}
Long result = calculate(0);
if (result == 1){
System.out.println("Factorio.calculate(0) returned " + result + ". Test passed!");
}
else{
System.out.println("Factorio.calculate(0) returned " + result + ". Test failed!");
}
result = calculate(5);
if (result == 120){
System.out.print("Factorio.calculate(5) returned " + result + ". Test passed!");
}
else{
System.out.print("Factorio.calculate(5) returned " + result + ". Test failed!");
}
}
public static long calculate(long n){
long factNum = 0;
if (n == 0){
return 1;
}
else{
for (int i = 0; i <= n; i++){
factNum = factNum + (n * (n - 1));
}
}
return factNum;
}
}
2条答案
按热度按时间n3h0vuf21#
错误消息指出编译器在Ramanujan类中找不到符号“阶乘”。这可能是因为您没有在Ramanujan类中导入阶乘类,或者阶乘类在不同的包中。
要解决此问题,请确保您已使用文件开头的“import”语句将Factorial类导入Ramanujan类中:
(导入包.名称.阶乘;//替换为实际的包和类名)
或者,您可以在创建Factorial对象时指定完整的包和类名:
包名阶乘f =新包名阶乘();//替换为实际的包和类名
另外,请注意,您的Factorial类有一个main方法,对于要用作实用程序类的类来说,该方法不是必需的。您可能希望从Factorial类中删除main方法。
au9on6nz2#
我忘记编译代码了:(。谢谢大家的帮助。