rhino 的控制台输入功能?

问题描述 投票:0回答:6

如何在 Rhino 中使用 javascript 接受来自控制台的变量?有类似于 cin 或 scanf 的东西吗?

javascript console rhino
6个回答
9
投票

这里有两行可以满足您的要求:

var stdin = new BufferedReader( new InputStreamReader(System['in']) )
var aLine = stdin.readLine();

2
投票

希望这对您有帮助:

从控制台读取一行的简单函数

function readline()
{
    var ist = new java.io.InputStreamReader(java.lang.System.in); 
    var bre = new java.io.BufferedReader(ist); 
    var line = bre.readLine();
    return line;
}
print("Name? ");
var name=readline();
print("Your name is: "+name);

1
投票

在Rhino中,您必须记住导入Java包才能使用它们。另外,Java String 与 JavaScript 原生 String 不同,因此您可能需要对其进行强制转换。

这是一个快速而肮脏的

readln()
,在 SpiderMonkeyRhino 中工作相同:

 var readln = (typeof readline === 'function') ? (readline) : (function() {
     importPackage(java.io);
     importPackage(java.lang);
     var stdin = new BufferedReader(new InputStreamReader(System['in']));

     return function() {
         return String(stdin.readLine());  // Read line, 
     };                                    // force to JavaScript String
 }());

0
投票

使用Java类库即可。我认为这会起作用:

var stdin = java.lang.System.in;
var line = stdin.readLine();

此时,可以轻松地将行转换为您喜欢的任何类型,或者使用正则表达式将其分成几部分。

这可能会混淆 Unicode 输入,但我不确定是否有跨平台的好方法。


0
投票
var ins = java.lang.System.in;
var newLine = java.lang.System.getProperty("line.separator");
var is = new java.io.InputStreamReader(ins);
var sb=new java.lang.StringBuilder();
var br = new java.io.BufferedReader(is);
var line = br.readLine();
while(line != null) {
    sb.append(line);
    sb.append(newLine);
    line = br.readLine();
}
var stdin = ""+sb.toString();//java string != javascript string
console.log("stdin:"+stdin);

0
投票

您可以使用

BufferedReader
代替
Console

var console = java.lang.System.console() 
var name = console.readLine("What is your name? ");
© www.soinside.com 2019 - 2024. All rights reserved.