Simple IO Input and Output using the System

  • Slides: 25
Download presentation
Simple I/O Input and Output using the System and Scanner Objects Copyright © 1998

Simple I/O Input and Output using the System and Scanner Objects Copyright © 1998 -2009 Curt Hill

System Object • The system object is available to every Java program • No

System Object • The system object is available to every Java program • No import statement is needed • It provides general and basic services • Output is easiest so will be considered first Copyright © 1998 -2009 Curt Hill

I/O and System • System contains two objects that give access to the console:

I/O and System • System contains two objects that give access to the console: – in – out • The in object reads things from keyboard • The out object writes things to screen Copyright © 1998 -2009 Curt Hill

Simple Output • System. out. print(x); – Takes any one standard type and writes

Simple Output • System. out. print(x); – Takes any one standard type and writes it out – One argument only – Leaves the line open for further writing • System. out. println(x); – Same as above but writes a newline afterward • These methods are overloaded – There is one for each primitive type Copyright © 1998 -2009 Curt Hill

Overloaded Methods • Many languages allow only one function or method of a given

Overloaded Methods • Many languages allow only one function or method of a given name – FORTRAN, Pascal, VB • Java and C++ allow overloaded function names • The compiler defines the function to call based on the signature Copyright © 1998 -2009 Curt Hill

Method Signature • The signature is the name and the parameter types • Thus

Method Signature • The signature is the name and the parameter types • Thus there may be two functions or methods that have next as a name provided they have different parameter types – next with an int parameter – next with a double parameter Copyright © 1998 -2009 Curt Hill

Output Example • Suppose: int a, b; double d, e; • More code …

Output Example • Suppose: int a, b; double d, e; • More code … and then System. out. print(a); System. out. print(“ “); System. out. println(d); – This would produce an output line similar to: 3 7. 2 depending on the values of a and d Copyright © 1998 -2009 Curt Hill

Simple Input • Input is substantially more complicated – Mostly because of error recovery

Simple Input • Input is substantially more complicated – Mostly because of error recovery • The only thing that is real easy to read is a string – No possible errors • Converting from a string to another type is more work Copyright © 1998 -2009 Curt Hill

Input Errors • Reading a value to be placed into integer variable is fraught

Input Errors • Reading a value to be placed into integer variable is fraught with danger • How may the string “abcde” be interpreted as an integer? • Many other types have the same problem • Standard input requires error catching and it is too early to discuss this now • Since Java has the extensibility of C++ there alternatives Copyright © 1998 -2009 Curt Hill

Scanner • A class that makes console input easier • It makes I/O easier

Scanner • A class that makes console input easier • It makes I/O easier by doing most of the error handling itself without showing any of it to the user • Obtaining it will be discussed in a later screen • It may be used to make System. in easier to use • We will also see how objects work Copyright © 1998 -2009 Curt Hill

What is needed? • An import statement – This is how libraries are accessed

What is needed? • An import statement – This is how libraries are accessed • A declaration – This declares a handle • An initialization • Usage by accessing methods of the Scanner class Copyright © 1998 -2009 Curt Hill

Import • The System class is available to every Java program – It is

Import • The System class is available to every Java program – It is very widely used • There are many others that need an import – The import statement will be covered in another presentation • After the package statement place this: import java. util. Scanner; Copyright © 1998 -2009 Curt Hill

Declaration • Like any declaration in Java the type is given first and then

Declaration • Like any declaration in Java the type is given first and then the variable name: Scanner input; • The convention is that class names start with capital letter and variables with a lower case • The variable name input may be any name that you want – Scanner is the predefined class name Copyright © 1998 -2009 Curt Hill

Initialization • Primitive types (int, float) are initialized somewhat differently than object types like

Initialization • Primitive types (int, float) are initialized somewhat differently than object types like Scanner or String • An object usually requires a new operator • A typical initialization is: input = new Scanner(System. in); • This could be combined in the declaration Copyright © 1998 -2009 Curt Hill

Form of new • The new operator allocates and initializes a new object •

Form of new • The new operator allocates and initializes a new object • The form is: new Classname(parms) • This is usually in an assignment • The Classname is actually a constructor call Copyright © 1998 -2009 Curt Hill

Input • The Scanner class has a number of input routines that have the

Input • The Scanner class has a number of input routines that have the following kind of names: next. Type() • Type is the capitalized name of the type • They always return the type they specify and take no parameters Copyright © 1998 -2009 Curt Hill

Members for input • . next. Int() returns an int • . next. Double()

Members for input • . next. Int() returns an int • . next. Double() returns a double • Also. next. Short, . next. Long, . next. Float and. next. Byte • . next returns a string • Scanner has many more features and is more complicated than needs to be considered here Copyright © 1998 -2009 Curt Hill

A Simple Example Program import java. util. Scanner; . . . int a; float

A Simple Example Program import java. util. Scanner; . . . int a; float f; double d; System. out. println ("Enter 3 values "); Scanner inp = new Scanner(System. in); a = inp. next. Int(); f = inp. next. Float(); d = inp. next. Double(); System. out. print(a); System. out. print(" "); System. out. print(f); System. out. print(" "); System. out. println(d); Copyright © 1998 -2009 Curt Hill

Considering the Above • The data that is read is separated by blanks •

Considering the Above • The data that is read is separated by blanks • The results produced by the reads could be used in other ways as well: – item = inp. next. Int() + inp. next. Int(); • Consider usage in simple program Copyright © 1998 -2009 Curt Hill

Copyright © 1998 -2009 Curt Hill

Copyright © 1998 -2009 Curt Hill

Copyright © 1998 -2009 Curt Hill

Copyright © 1998 -2009 Curt Hill

Errors • What happens if the data on the input line is not of

Errors • What happens if the data on the input line is not of an acceptable form – Not an integer for a next. Int • An error with a traceback occurs Copyright © 1998 -2009 Curt Hill

Copyright © 1998 -2009 Curt Hill

Copyright © 1998 -2009 Curt Hill

Flexibility • The Scanner class is flexible in parsing input • The items may

Flexibility • The Scanner class is flexible in parsing input • The items may be on one line or several • Here is the same program with the three values placed on separate lines: Copyright © 1998 -2009 Curt Hill

Copyright © 1998 -2009 Curt Hill

Copyright © 1998 -2009 Curt Hill