2011-03-22 31 views
16

Vi esto para muchos otros idiomas pero no para JavaScript.¿Hay alguna manera de leer la entrada estándar con JavaScript?

Estoy tratando de hacer problemas como: esto (codechef.com) y, por supuesto, los programas deben ser capaces de leer de forma estándar en como lo hacen C++ y otros lenguajes.

EDIT: Gracias por las respuestas. La razón principal por la que quiero esta funcionalidad es para poder responder las preguntas en CodeChef; Codechef envía múltiples entradas a los archivos/programas que son las respuestas (y por supuesto los programas tienen que responder de la manera requerida para que la respuesta sea correcta).

Respuesta

7

Depende del ambiente que tiene el JavaScript se ejecuta en.

En el navegador, no hay ninguna entrada estándar (el navegador no es una consola). La entrada vendría generalmente de algún elemento de cuadro de texto en un formulario en la página.

Si está usando algo como Rhino, a continuación, puede importar las clases de E/S estándar de Java I y leer desde la entrada estándar de esa manera (ver la segunda example ya no está en la wiki).

1

No está en la biblioteca estándar ECMAScript (versión estandarizada de JavaScript). Sin embargo, algunas implementaciones de JavaScript sí lo incluyen. Por ejemplo, CommonJS, que es utilizado por varios entornos JavaScript fuera del navegador, tiene una propiedad system.stdin. Rhino puede usar las clases de entrada estándar de Java.

Si solo está tratando de practicar la programación, puede usar un textarea como sustituto de la entrada estándar.

1

En algunos entornos como el de interviewstreet, proporcionan una función en la que todas las entradas se presentan como un argumento en forma de cadena.

Todas las entradas a la vez.

Luego tiene que analizar esa entrada para obtener varios tokens de esa cadena.

Después de esto, será bueno escribir el código adicional.

6

Si utiliza nodo para actuar como intérprete en el terminal, puede utilizar esto:

---- name.js ---- 
var readline = require('readline'); 

var rl = readline.createInterface({ 
    input: process.stdin, 
    output: process.stdout 

}); 

rl.question(">>What's your name? ", function(answer) { 
    console.log("Hello " + answer); 
    rl.close(); 
}); 

----- terminal ---- 
node name.js 
Cuestiones relacionadas