Console
Java programs often write to the console window. We use System.out
—we read input, and write output, with this stream. And this fills many program requirements.
We can use println
with no argument for a blank line. Different argument types, like arrays, strings, and ints are supported. The methods are versatile.
Println
This example uses the println
and print methods. The println
method adds a newline to the end of any output. It can even be used with no argument—this outputs only a newline.
public class Program { public static void main(String[] args) { System.out.println("Print line"); System.out.print("A"); System.out.print("B"); System.out.println(); System.out.println("C"); } }Print line AB C
Char
arrayThe print and println
methods on System.out
can receive a char
array. This can avoid conversions—if we have a char
array, we can print it directly.
public class Program { public static void main(String[] args) { char[] array = new char[3]; array[0] = 'a'; array[1] = 'b'; array[2] = 'c'; // Print a char array. System.out.println(array); } }abc
For primitive types like ints, chars and doubles we do not need to convert before using print and println
. There are overloads that handle these types directly.
public class Program { public static void main(String[] args) { // Print ints directly, no conversion needed. int value = 10; System.out.println(value); System.out.println(value * 10); } }10 100
Append
System.out
references a PrintStream
. With this stream, we can append data. A CharSequence
is accepted by the append method, so we can pass a string
.
string
.public class Program { public static void main(String[] args) { // Append strings to output stream. System.out.append("cat"); System.out.append("\n"); // Append range of CharSequence. System.out.append("java program", 5, 5 + 7); } }cat program
We wrap a BufferedReader
around System.in
to read strings from the console. The syntax is complicated, but once we get an available BufferedReader
, it is easy to use.
BufferedReader
class
can be initialized from an InputStream
(such as System.in
).InputStreamReader
class
provides utility methods for reading from a stream. It is also used on files.import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Program { public static void main(String[] args) throws IOException { // Get BufferedReader for System.in. BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); // Read line from console. String line = in.readLine(); System.out.println("You typed " + line); } }something You typed something
This program uses a while-true
loop to infinitely ask the user for input. It then parses the input into an int
, using 0 for invalid values.
switch
statement to handle the user-input. The "break
" statements apply to the switch
statement, not the loop.import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class Program { public static void main(String[] args) throws IOException { // Read input with BufferedReader. BufferedReader in = new BufferedReader( new InputStreamReader(System.in)); while (true) { // Read line and try to call parseInt on it. String line = in.readLine(); int result; try { result = Integer.parseInt(line); } catch (NumberFormatException exception) { result = 0; } // Handle user input in a switch case. switch (result) { default: System.out.println("Default"); break; case 1: System.out.println("One"); break; case 2: System.out.println("Two"); break; } } } }cat Default 2 Two 1 One Default
Java provides robust console support. It recognizes the utility of these programs. Console
programs are often harder to use, but easier to develop.