How can I write a simple JScript input/output program?

前端 未结 2 1263
梦毁少年i
梦毁少年i 2021-01-02 09:46

I\'m planning on using JavaScript to enter an informatics competition (BIO) tomorrow. However, I can\'t rely on the examiner having a browser with a decent JavaScript engine

相关标签:
2条回答
  • 2021-01-02 10:31

    If you want to be sure your program only runs in the command line, you may use the WScript.StdIn and WScript.StdOut objects/properties:

    var myString = WScript.StdIn.ReadLine();
    WScript.StdOut.WriteLine(myString);
    

    and run it with cscript.exe. But if you want it to be a GUI program, it is a bit more difficult considering that JScript doesn't have a native InputBox function like VBScript. However, as described here we may use Windows Script Host (WSH). Create a .wsf file:

    <?xml version="1.0" encoding="ISO-8859-1"?>
    <job id="testJScriptInputBox">
        <script language="VBScript">
        <![CDATA[
            Function WSHInputBox(Message, Title, Value)
                WSHInputBox = InputBox(Message, Title, Value)
            End Function
        ]]>
        </script>
    
        <script language="JScript">
        <![CDATA[
            var vbOKOnly = 0;                // Constants for Popup
            var vbInformation = 64;
    
            var title = "InputBox function for JScript";
            var prompt = "Enter a string: ";
    
            var WshShell = WScript.CreateObject("WScript.Shell");
    
            var result = WSHInputBox(prompt, title, "New York");
    
            if (result != null)   
            {  // Cancel wasn't clicked, so get input.
                var intDoIt =  WshShell.Popup(result,
                                              0,
                                              "Result",
                                              vbOKOnly + vbInformation);
            }
            else
            { // Cancel button was clicked.
                var intDoIt =  WshShell.Popup("Sorry, no input",
                                              0,
                                              "Result",
                                              vbOKOnly + vbInformation);
            }                           
    
        ]]>
        </script>
    </job>
    

    and run it with either cscript.exe or wscript.exe. Alternatively, you could also use HTML Application (HTA) to create more elaborate GUIs.

    0 讨论(0)
  • 2021-01-02 10:32

    If you're using the command-line, I'd execute the script using CSCRIPT.EXE. ie: CSCRIPT.EXE myscript.js This is because WScript.Echo from WSCRIPT will create a dialog box and from CSCRIPT outputs a line to the console. Run this in a command window (CMD).

    Reading a line from console into variable:

    var x = WScript.StdIn.ReadLine();
    

    Where StdIn is a TextStream object. There is also an StdOut which can be used in place of WScript.Echo()...

    Writing the output of foo(x) to console: (must run under CSCRIPT)

    WScript.Echo(foo(x));
    

    You can use the WScript object to determine which engine you are running under, there's a question/answer for that (VBScript, but uses the same objects under JScript) here.

    0 讨论(0)
提交回复
热议问题