консольная функция ввода для носорога? - PullRequest
8 голосов
/ 22 декабря 2010

Как мне принять переменную из консоли с javascript в Rhino? что-нибудь похожее на cin или scanf?

Ответы [ 5 ]

8 голосов
/ 27 февраля 2011

Вот две строки, которые будут делать то, что вы хотите:

var stdin = new BufferedReader( new InputStreamReader(System['in']) )
var aLine = stdin.readLine();
1 голос
/ 15 марта 2011

В 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
 }());
0 голосов
/ 26 июня 2015

Надеюсь, это поможет вам:

Простая функция, которая читает строку из консоли

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);
0 голосов
/ 07 мая 2014
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 голосов
/ 22 декабря 2010

Просто используйте библиотеку классов Java. Я думаю, что это будет работать:

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

В этот момент легко преобразовать строку в любой понравившийся вам тип или разбить ее на части, используя RegExp.

Это может исказить ввод Unicode, но я не уверен, что есть хороший способ обойти это, кросс-платформенный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...