reading from console, InputStreamReader etc.

Discussion in 'Java' started by mehafi, Aug 2, 2007.

  1. mehafi

    mehafi Guest

    I've got 2 question:
    1) I'd like to read a double value from console, so I wrote:

    char c = new char[100];
    InputStreamReader isr = new InputStreamReader(;;
    String s = new String(c);
    double d = Double.parseDouble(s);
    catch (IOException ioe) { }

    Have I to write such much code to do such simple think?
    In C++ I nead only:
    double d;
    cin >> d;

    2) I need to detect is someone pres some key, without echo on console
    and without press enter after key. In C++ it's like this:

    char c = getch();

    Is in Java something like this?

    thanks in advance
    mehafi, Aug 2, 2007
    1. Advertisements

  2. Suppressing exceptions by catching them but doing nothing about it is
    almost always a bad choice. If you are not going to do anything about
    the I/O failure at least get rid of the try-catch block, adding "throws
    IOException" to the method signature, so that it will propagate up the
    stack without being hidden.
    I would have put "throws IOException" on the method declaration and written:

    BufferedReader inReader = new BufferedReader(new
    String inData = inReader.readLine();
    double someMeaningfulName = Double.parseDouble(inData);

    C++ is generally a more terse language than Java. At the time C was
    designed, a lot of work was being done over relatively slow phone
    connections, so that terseness was good. Java was designed at a time of
    high bandwidth connections and IDEs with completion capabilities. It is
    less terse in its built-in features and tends to encourage meaningful
    identifiers and other non-terse programming practices.
    Not, as far as I know, for console input. Normally you are expected to
    do that sort of thing in a GUI. There are ways of attaching a Listener
    to a GUI component to capture key presses.

    Again, at the time C was designed people did a lot of GUI-ish things on
    text consoles. In the 1980's, used Emacs as a sort of GUI environment,
    with multiple files being edited and at least one shell all in a single
    80 by 24 text display. Java was designed in a graphical display world,
    and tends to favor graphical displays for user interaction.

    Java and C++ are very different languages. I tend to get from idea to
    working, documented program faster in Java than in C++, and find it
    easier to maintain and refactor. Those things are far more valuable to
    me than terseness, so I prefer Java. YMMV.

    Patricia Shanahan, Aug 2, 2007
    1. Advertisements

  3. mehafi

    Guest Guest

    You need to do once:

    Scanner scn = new Scanner(;

    and then for each time you want to read a double:

    double d = sv.nextDouble();

    (and to catch exceptions somewhere but not necessarily with
    a try catch around every read)
    Actually it is not like that in C++.

    It is like that in certain C++ compilers that are compatible with
    certain popular C compilers in the early 90's.

    getch is not part of ANSI C or ANSI C++.

    I am not aware of any way to do the same in a Java console app.

    Probably due to the fact that the feature is not possible on all

    Guest, Aug 12, 2007
    1. Advertisements

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments (here). After that, you can post your question and our members will help you out.