控制台输入功能为犀牛?

时间:2010-12-22 11:52:40

标签: javascript console rhino

如何在Rhino中使用javascript从控制台接受变量?什么类似于cin或scanf?

5 个答案:

答案 0 :(得分:8)

这两行可以做你想要的:

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

答案 1 :(得分: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
 }());

答案 2 :(得分:0)

只需使用Java类库。我认为这会奏效:

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

此时,很容易将线转换为您喜欢的任何类型,或使用RegExp将其分解为多个部分。

这可能会造成Unicode输入,但我不确定是否有一种很好的解决方案,跨平台。

答案 3 :(得分: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);

答案 4 :(得分:0)

我希望这会对你有所帮助:

从控制台读取一行的简单功能

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);