Discussion:
Reading different types of console inputs in Java
(too old to reply)
Proud Japanese
2011-06-13 05:31:33 UTC
Permalink
Hello,

I am a Java newbie and I am trying to see how to read different types
of console inputs in Java (int, float, string etc.). I have found the
following code snippet at wikianswers (http://wiki.answers.com/Q/
How_do_you_accept_an_integer_or_a_float_or_double_value_as_a_console_input_from_user_in_java_also_you_do_want_to_use_command_line_arguments):

Is this the best way to realize what I am trying to do, or is there a
simpler, less verbose way (similar to the ">>" streaming operator in C+
+)?

Thanks,
Hayato



// ------------ Code snippet begin ------------

// create an BufferedReader from the standard input stream
BufferedReader in = new BufferedReader(new
InputStreamReader(System.in));
String currentLine = "";

// read integers
System.out.print("Input an integer: ");
while (!(currentLine = in.readLine()).equals("")) {
int input = 0;
try {
input = Integer.parseInt(currentLine);
} catch (final NumberFormatException ex) {
System.out.println("That was not an integer.");
}

System.out.println("\tInteger read: " + input);
System.out.print("Input an integer: ");

}

// read floats
System.out.print("Input an float: ");
while (!(currentLine = in.readLine()).equals("")) {
float input = 0.0f;

try {
input = Float.parseFloat(currentLine);
} catch (final NumberFormatException ex) {
System.out.println("That was not an float.");
}

System.out.println("\tFloat read: " + input);
System.out.print("Input an float: ");

}

// read doubles
System.out.print("Input an double: ");
while (!(currentLine = in.readLine()).equals("")) {
double input = 0.0;
try {
input = Double.parseDouble(currentLine);
} catch (final NumberFormatException ex) {
System.out.println("That was not an double.");
}

System.out.println("\tDouble read: " + input);
System.out.print("Input an double: ");
}


// ------------ Code snippet end ------------
Proud Japanese
2011-06-13 05:42:33 UTC
Permalink
Also, why is string reading from the console so different from reading
other data types?

String s = in.readLine();

TIA
Roedy Green
2011-06-13 13:13:22 UTC
Permalink
On Sun, 12 Jun 2011 22:31:33 -0700 (PDT), Proud Japanese
Post by Proud Japanese
I am a Java newbie and I am trying to see how to read different types
of console inputs in Java (int, float, string etc.).
The FileIO Amanuensis will generate you code for various types of i/o
including to and from the console.

See http://mindprod.com/applet/fileio.html
--
Roedy Green Canadian Mind Products
http://mindprod.com
One of the great annoyances in programming derives from the irregularity
of English spelling especially when you have international teams.
I want to find a method or variable, but I don't know precisely
how its is spelled or worded. English is only approximately phonetic.
Letters are randomly doubled. The dictionary often lists variant spellings.
British, Canadian and American spellings differ.I would like to see an
experiment where variable names were spelled in a simplified English, where
there were no double letters.I also think you could add a number of rules
about composing variable names so that a variable name for something would
be highly predictable. You would also need automated enforcement of the
rules as well as possible.
markspace
2011-06-13 15:55:04 UTC
Permalink
Post by Proud Japanese
Is this the best way to realize what I am trying to do, or is there a
simpler, less verbose way (similar to the ">>" streaming operator in C+
+)?
I think the Scanner class is simpler:

<http://download.oracle.com/javase/tutorial/essential/io/scanning.html>

Just be sure to use System.in instead of the BufferedReader/FileReader
combo they're using to read console input.

You might also want to check the docs for the Java Console class:

<http://download.oracle.com/javase/6/docs/api/java/io/Console.html>
Proud Japanese
2011-07-11 00:34:40 UTC
Permalink
Post by markspace
Post by Proud Japanese
Is this the best way to realize what I am trying to do, or is there a
simpler, less verbose way (similar to the ">>" streaming operator in C+
+)?
<http://download.oracle.com/javase/tutorial/essential/io/scanning.html>
I found a fairly decent example that illustrates the usage of the
Scanner class at the following location:
http://www.cs.utexas.edu/users/ndale/Scanner.html

I modified it slighly to show the usage of hasNext() and next(). {Did
not include nextLine(), which returns the rest of the current line,
excluding any line separator at the end.}

My question is this: Is there a way to read the following basic data
types from the input console:
- character
- boolean
- byte
- short

Thanks,
Hayato






//
************************************************************************

// MixedTypeInput

// This application demonstrates testing before reading to be

// sure to use the correct input method for the data.

//
************************************************************************



import java.io.*;

import java.util.Scanner;

public class MixedTypeInput

{

public static void main(String[] args)

{

double number;

Scanner in = new Scanner(System.in);

System.out.println("Enter your gross income: ");

if (in.hasNextInt())

{

number = (double)in.nextInt();

System.out.println("You entered " + number);

}

else if (in.hasNextFloat())

{

number = (double)in.nextFloat();

System.out.println("You entered " + number);

}

else if (in.hasNextDouble())

{

number = in.nextDouble();

System.out.println("You entered " + number);

}

else if (in.hasNext())
{
String token = in.next();
System.out.println("Token " + token + " is not an integer or a
real value.");
}
else

System.out.println("Null token");



// Scanner s = null;
// try {
// s = new Scanner(new BufferedReader(new
FileReader("input.txt")));
//
// while (s.hasNext()) {
// System.out.println(s.next());
// }
// }
// finally {
// if (s != null) {
// s.close();
// }
// }
}
}

Loading...