Home | Contact Us | FAQ | Search & Site Map | Link to Us
Sign In | Join | Other 45 Sites in Network
HomeAnnouncementsWhite Papers
Discussion GroupsFirst AidDatabasesJavaBeansGUIJava 3DVirtual MachineCORBASecurityToolsGeneral
Java DirectoryOpen Source ProjectsSample Book ChaptersUser GroupsWeb Resources
Related Topics
Databases.NETMore Topics ...

Java Forum / General / August 2007

Tip: Looking for answers? Try searching our database.

reading from console, InputStreamReader etc.

Thread view: 
mehafi@gmail.com - 02 Aug 2007 11:59 GMT
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) { }

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
Patricia Shanahan - 02 Aug 2007 13:30 GMT
> Hi,
> I've got 2 question:
[quoted text clipped - 8 lines]
> }
> 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
Arne Vajhøj - 12 Aug 2007 04:27 GMT
> 1) I'd like to read a double value from console, so I wrote:
>
[quoted text clipped - 11 lines]
> double d;
> cin >> d;

You need to do once:

Scanner scn = new Scanner(System.in);

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)

> 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?

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
platforms.

Arne


Free Magazines

Get these publications absolutely FREE for up to 12 months. There are no hidden fees and no obligation. Simply choose a title, complete the application form and submit it. Read more ...

Oracle MagazineNetwork ComputingComputer WorldBio-IT WorldeWeekInformation WeekInfosecurity
 
Sign In
Join
My Latest Posts
My Monitored Threads
My Blog
My Photo Gallery
My Profile
My Homepage

Start New Thread
Enable EMail Alerts
Rate this Thread



©2009 Advenet LLC   Privacy Policy - Terms of Use
This website includes both content owned or controlled by Advenet as well as content owned or controlled by third parties.