Re: reading from console, InputStreamReader etc.
mehafi@gmail.com wrote:
Hi,
I've got 2 question:
1) I'd like to read a double value from console, so I wrote:
try{
char c = new char[100];
InputStreamReader isr = new InputStreamReader(System.in);
isr.read(c);
String s = new String(c);
double d = Double.parseDouble(s);
}
catch (IOException ioe) { }
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.
Have I to write such much code to do such simple think?
In C++ I nead only:
double d;
cin >> d;
I would have put "throws IOException" on the method declaration and written:
BufferedReader inReader = new BufferedReader(new
InputStreamReader(System.in));
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.
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?
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