функции консольного ввода для Рино?
Как принять переменную из консоли с javascript в Rhino? что-нибудь похожее на cin или scanf?
5 ответов
вот две строки, которые будут делать то, что вы хотите:
var stdin = new BufferedReader( new InputStreamReader(System['in']) )
var aLine = stdin.readLine();
в Rhino, вы должны помнить, чтобы импортировать пакеты Java, прежде чем вы можете использовать их. Кроме того, Java String отличается от JavaScript native String, поэтому вы можете захотеть ее отлить.
вот быстрый и грязный readln()
это работает одинаково в обоих SpiderMonkey и носорог:
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
}());
просто используйте библиотеку классов Java. Я думаю, это сработает:
var stdin = java.lang.System.in;
var line = stdin.readLine();
в этот момент легко преобразовать строку в любой тип, который вам нравится, или разбить ее на части с помощью регулярного выражения.
это может исказить ввод Unicode, но я не уверен, что есть хороший способ обойти это, кросс-платформенный.
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);
Я надеюсь, что это поможет вам:
простая функция, которая считывает строку из консоли
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);