функции консольного ввода для Рино?

Как принять переменную из консоли с 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);