未捕获 运行 时间 JavaScript 异常 (Rhino)
Uncaught run time JavaScript exception (Rhino)
我正在使用以下 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 和 Java脚本的作用域行为略有不同。你的问题是这一行:
var r=Integer.parseInt(c[1]);
在 Java 中,for 循环会有不同的作用域,但 JS 作用域涵盖了整个函数,因此您对另一个 r
变量的赋值会覆盖 r
变量存储缓冲 reader。给其中一个取个不同的名字。
我正在使用以下 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 和 Java脚本的作用域行为略有不同。你的问题是这一行:
var r=Integer.parseInt(c[1]);
在 Java 中,for 循环会有不同的作用域,但 JS 作用域涵盖了整个函数,因此您对另一个 r
变量的赋值会覆盖 r
变量存储缓冲 reader。给其中一个取个不同的名字。