public class fakultaet1 {
public static long fakultaet(long n) {
if (n<0)
throw new FakultaetNichtDefiniertException(n);
if (n==0)
return 1;
long fakultaet = 1;
while(n>1){
fakultaet *= n; // had a litte mistake here
n--;
}
return fakultaet;
}
public class FakultaetNichtDefiniertException extends RuntimeException{
public FakultaetNichtDefiniertException(long n){
super("Die Fakultät is für den Wert "+ n +" nicht definiert.");
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.println(fakultaet(5));
}
}
所以我希望我的代码计算输入 n 的阶乘,当数字小于 0 时它应该抛出异常,但如果我尝试运行它会给我这个输出。
Exception in thread "main" java.lang.Error: Unresolved compilation problem:
No enclosing instance of type fakultaet1 is accessible. Must qualify the
allocation with an enclosing instance of type fakultaet1 (e.g. x.new A()
where x is an instance of fakultaet1).
at klausur_ws1718.fakultaet1.fakultaet(fakultaet1.java:8)
at klausur_ws1718.fakultaet1.main(fakultaet1.java:29)
我不太明白这个错误。提前致谢。
最佳答案
您将 FakultaetNichtDefiniertException
类定义为 fakultaet1
的内部类,这意味着如果您提供封闭 的实例,则只能创建它的实例fakultaet1
类。这没有多大意义。
您可以将异常类移出 fakultaet1
,或者将其设为嵌套类(静态),这不需要封闭实例:
static class FakultaetNichtDefiniertException extends RuntimeException{
public FakultaetNichtDefiniertException(long n){
super("Die Fakultät is für den Wert "+ n +" nicht definiert.");
}
}
关于java - 实现计算数字阶乘的方法,但有异常(exception),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50392214/