javascript - 未捕获的运行时 JavaScript 异常 (Rhino)

标签 javascript combinatorics rhino runtimeexception

我正在使用以下 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.

最佳答案

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

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

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

关于javascript - 未捕获的运行时 JavaScript 异常 (Rhino),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29208899/

相关文章:

javascript - 如何使用JS检查一个对象是否存在于另一个对象中

r - 如何并行化comb()?

algorithm - 计算组合乐高积木的方法数量

javascript - 用 javascript 写入文件

javascript - 如何调整来自不同 HTML 元素的背景图像的堆叠顺序/z-index

javascript - 捕获触发回发的任何事件,并在数据发送到服务器之前触发事件

algorithm - 从一个集合中找到多个最大不同的二元向量

java - 如何使用Rhino将 "AstRoot"对象写入包含注释的文件?

javascript - 在 java 中安全运行 javascript 代码

javascript - 访问json对象中的#element