【问题标题】:Uncaught run time JavaScript exception (Rhino)未捕获的运行时 JavaScript 异常 (Rhino)
【发布时间】:2015-03-23 11:17:06
【问题描述】:

我正在使用以下 JavaScript 程序来计算组合。

importPackage(java.io);
importPackage(java.lang);
importPackage(java.math);
importPackage(java.util);
var r = new BufferedReader( new InputStreamReader(System['in']) )
var t = Integer.parseInt(r.readLine());
for(var i=0;i<t;i++)
{
            var c=(r.readLine()).split("\\s+");
            var n=Integer.parseInt(c[0]);
            var r=Integer.parseInt(c[1]);
            System.out.println(""+(f(n)/f(r)/f(n-r))+"\n");
}
function f(y)
{
    var s=1;
    for (var i = 2; i <= y;)
    {
        s*=i++;
    }
    return s;
}

如果我给出以下输入:

2
45 42
48 26

对于第一种情况,我得到了正确的输出,但对于第二种情况,我得到了这个错误。

14190

js: uncaught JavaScript runtime exception: TypeError: Cannot find function readLine in object 42.

【问题讨论】:

    标签: javascript combinatorics rhino runtimeexception


    【解决方案1】:

    Java 和 JavaScript 的作用域行为略有不同。你的问题是这一行:

    var r=Integer.parseInt(c[1]);
    

    在 Java 中,for 循环的作用域不同,但 JS 作用域覆盖整个函数,因此您对另一个 r 变量的赋值会覆盖存储缓冲阅读器的 r 变量。给其中一个取一个不同的名字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-10-12
      • 1970-01-01
      • 1970-01-01
      • 2014-12-22
      • 2018-03-03
      • 2017-08-25
      • 1970-01-01
      • 2012-06-05
      相关资源
      最近更新 更多