java - 实现计算数字阶乘的方法,但有异常(exception)

标签 java exception

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/

相关文章:

java - 在 Weblogic Server 8.13 中记录 SQL

java - catalina.out 出现异常时发送邮件

C++ std::ios_base::failure 异常

c# - 在 gridview 中处理空日期时间

java - JAXB 忽略 xml 标记属性

java - TwinML Java 说 : Cyrillic letters are not read

java - “UNC paths are not supported” 命令中出现 “SVN Info” 错误

java - 如何从spring boot jpa的两个表中获取数据

c# - 将 Messagebox 放在任何项目的任何 UserControl 中的任何位置时出现 InvalidOperationException

swift - “ fatal error :在展开可选值时意外发现nil”是什么意思?