Java 实现一种计算数字阶乘的方法,例外

Java 实现一种计算数字阶乘的方法,例外,java,exception,Java,Exception,我真的不理解这个错误。提前感谢。您将FakultaetNichtDefiniertException类定义为fakultaet1的内部类,这意味着您只能在提供封闭的fakultaet1类的实例时创建它的实例。这没有多大意义 您可以将exception类移出fakultaet1,或者使其成为嵌套类(静态),而不需要封闭实例: Exception in thread "main" java.lang.Error: Unresolved compilation problem: No enclo

我真的不理解这个错误。提前感谢。

您将
FakultaetNichtDefiniertException
类定义为
fakultaet1
的内部类,这意味着您只能在提供封闭的
fakultaet1
类的实例时创建它的实例。这没有多大意义

您可以将exception类移出
fakultaet1
,或者使其成为嵌套类(静态),而不需要封闭实例:

 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)

您将
fakultaetnichdefiniertexception
类定义为
fakultaet1
的内部类,这意味着您只能在提供封闭的
fakultaet1
类的实例时创建它的实例。这没有多大意义

您可以将exception类移出
fakultaet1
,或者使其成为嵌套类(静态),而不需要封闭实例:

 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)

您的fakultaetnichdefiniertexception类是fakultaet1类的内部类。如果范围中没有可用的封闭类实例,则无法实例化内部类的对象。 一种可能的解决方案是使内部类保持静态。 另一种解决方案是将内部类定义为普通类,位于封闭类之外


您的FakultAetNichtDefinierException类是fakultaet1类的内部类。如果范围中没有可用的封闭类实例,则无法实例化内部类的对象。 一种可能的解决方案是使内部类保持静态。 另一种解决方案是将内部类定义为普通类,位于封闭类之外


如果
n==0
则立即
返回1
,使其余代码无法访问。编辑:我想。由于缺少
{}
和缩进,我很难阅读您的if语句。对不起,如果是单线的话,整个事情不知怎么搞砸了。每个类只能有一个公共类。看来你没有在这里展示完整的课程。因此:研究并相应地改进你的问题。“未解决的编译”问题基本上意味着:它甚至不编译。所以,即使eclipse允许这样做:当您的类没有编译时,也不要运行它!如果
n==0
则立即
返回1
,使其余代码无法访问。编辑:我想。由于缺少
{}
和缩进,我很难阅读您的if语句。对不起,如果是单线的话,整个事情不知怎么搞砸了。每个类只能有一个公共类。看来你没有在这里展示完整的课程。因此:研究并相应地改进你的问题。“未解决的编译”问题基本上意味着:它甚至不编译。所以,即使eclipse允许这样做:当您的类没有编译时,也不要运行它!谢谢你,我甚至没有那样想!谢谢你,我甚至没有那样想!
static class FakultaetNichtDefiniertException extends RuntimeException{
    public FakultaetNichtDefiniertException(long n){
        super("Die Fakultät is für den Wert "+ n +" nicht definiert.");
    } 
}