如何在Rhino中使用javascript从控制台接受变量?什么类似于cin或scanf?
答案 0 :(得分:8)
这两行可以做你想要的:
var stdin = new BufferedReader( new InputStreamReader(System['in']) )
var aLine = stdin.readLine();
答案 1 :(得分:1)
在Rhino中,您必须记住在使用它们之前导入Java包。此外,Java String与JavaScript本机String不同,因此您可能希望将其强制转换。
这是一个快速而肮脏的readln()
,在SpiderMonkey和Rhino中的工作方式相同:
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);