Presentation is loading. Please wait.

Presentation is loading. Please wait.

ISE 582: Web Technology for Industrial Engineering University of Southern California DJE Dept of Industrial and Systems Engineering Lecture 6 JAVA Cup.

Similar presentations


Presentation on theme: "ISE 582: Web Technology for Industrial Engineering University of Southern California DJE Dept of Industrial and Systems Engineering Lecture 6 JAVA Cup."— Presentation transcript:

1

2 ISE 582: Web Technology for Industrial Engineering University of Southern California DJE Dept of Industrial and Systems Engineering Lecture 6 JAVA Cup 5: Data Structures

3 3 October 2002Web Technology for IE2 Handouts Lecture 6 slides READ Winston & Narasimhan : –Chapters 27-31, 33 (pp 149-194, 201-203)

4 3 October 2002Web Technology for IE3 JAVA Cup 5 File Access –Input file streams –Output file streams Arrays and Vectors –How to create and access arrays –Expandable vectors Characters and Strings

5 3 October 2002Web Technology for IE4 File Input Streams Reading files one-byte-at-a-time Taking bigger bites Java’s input-output package Traditional string handling Updating to tokens: number / words

6 3 October 2002Web Technology for IE5 File input streams A stream is a sequence of values. To read bytes from a file: –FileInputStream stream = new FileInputStream(“input.data”) –FileInputStream stream = new FileInputStream(“~username/public_html/ise582/input.dat a”); When you are done, it is good to: –stream.close() Reads ONE BYTE AT A TIME…

7 3 October 2002Web Technology for IE6 To take bigger bites than bytes To read characters from your file: –InputStreamReader reader = new InputStreamReader(stream); To read lines from your file: –BufferedReader buffer = new BufferedReader(reader); –buffer.readLine() streamreaderbuffer

8 3 October 2002Web Technology for IE7 Input-output package Notify JAVA that you want to work with input or output streams: –import java.io.FileInputStream –import java.io.* In the event of error –use try-catch statements –throw an exception, throws IOException

9 3 October 2002Web Technology for IE8 Traditional Approach Example import java.io.*; public class Demonstrate { public static void main(String argv[]) throws IOException { FileInputStream stream = new FileInputStream(“input.data”); InputStreamReader reader = new InputStreamReader(stream); BufferedReader buffer = new BufferedReader(reader); String line; while ((line=buffer.readLine())!=null && !line.equals(“”)) { System.out.println(“Line read: “ + line); } stream.close(); return; }}

10 3 October 2002Web Technology for IE9 String Methods line.trim() –removes white space line.indexOf(“ “) –index of first occurrence, starts from 0 line.substring(2) –returns rest of line after index 2 line.substring(0,1) Integer.parseInt(“4”) –converts string to integer

11 3 October 2002Web Technology for IE10 Example Continued line = line.trim(); int nextSpace = line.indexOf(" "); int x = Integer.parseInt(line.substring(0,nextSpace)); line = line.substring(nextSpace).trim(); nextSpace=line.indexOf(" "); int y = Integer.parseInt(line.substring(0,nextSpace)); line = line.substring(nextSpace).trim(); int z = Integer.parseInt(line); System.out.println("Numbers read: " + x + ", " + y + ", " + z);

12 3 October 2002Web Technology for IE11 The Token Approach The stream tokenizer: –StreamTokenizer tokens = new StreamTokenizer(reader); –Do away with the BufferedReader –Divides character sequences into tokens, delimited by white space Token Methods: –tokens.nextToken() –assigns value to nval, tokens.nval –always a double, if need recasting: (int) tokens.nval –end of token string indicated by TT_EOF: tokens.TT_EOF

13 3 October 2002Web Technology for IE12 Token Example import java.io.*; public class Demonstrate { public static void main (String argv[]) throws IOException { FileInputStream stream = new FileInputStream("input.data"); InputStreamReader reader = new InputStreamReader(stream); StreamTokenizer tokens = new StreamTokenizer(reader); while (tokens.nextToken()!= tokens.TT_EOF) { int x = (int) tokens.nval; tokens.nextToken(); int y = (int) tokens.nval; tokens.nextToken(); int z = (int) tokens.nval; Movie m = new Movie(x,y,z); System.out.println("Rating: " + m.rating()); } stream.close(); }}

14 3 October 2002Web Technology for IE13 Words vs. Numbers If the token is a number –nextToken returns a TT_NUMBER instance –the number is assigned to nval If the token is a word –nextToken returns a TT_WORD instance –the number is assigned to sval

15 3 October 2002Web Technology for IE14 Word / Number Example int next=0; while ((next=tokens.nextToken())!= tokens.TT_EOF) { switch (next) { case tokens.TT_WORD: break; case tokens.TT_NUMBER: int x = (int) tokens.nval; tokens.nextToken(); int y = (int) tokens.nval; tokens.nextToken(); int z = (int) tokens.nval; Movie m = new Movie(x,y,z); System.out.println("Rating: " + m.rating()); break; } }

16 3 October 2002Web Technology for IE15 Arrays and Vectors Creating / assigning values to arrays Passing arrays to methods Command-line arguments Creating vectors Vector methods Vectors as targets Using vector iterators

17 3 October 2002Web Technology for IE16 Creating Arrays Creating an array – [] = new [ ]; –int durations [] = new int [4]; What you can do with an array –call / assign an elt: [ ] –find its length:.length Arrays of class instances – [] = new [ ]; –Movie movies [] = new Movie [4];

18 3 October 2002Web Technology for IE17 Instance Array Elements Field-selection operator still works –movies[3].script = 6 Checking to see if element is assigned –movies[2] == null Using instance as target for method –movies[1].rating()

19 3 October 2002Web Technology for IE18 Mixing Creation and Elt Insertion public class Demonstrate { public static void main (String argv[]) { Movie movies[] = {new Movie(5,6,3), new Movie(8,7,7), new Movie(7,2,2), new Movie(7,5,5)}; int sum = 0; for (int counter=0; counter < movies.length; ++counter) { sum += movies[counter].rating(); } System.out.print("The average rating of the " + movies.length); System.out.println(" movies is " + sum / movies.length); }

20 3 October 2002Web Technology for IE19 Arrays and Memory Arrays are reference type variables Integer arrays contain a length variable and 4 bytes of memory per instance Class instance arrays contain a length variable and several bytes for the address of each instance

21 3 October 2002Web Technology for IE20 Higher Dimension Arrays You can easily define arrays of higher dimension –double 2DArray [] [] = new double[2][100];

22 3 October 2002Web Technology for IE21 Passing an Array to a Method To designate that a parameter is array –public static Movie[] readData(Movie movies []) throws IOExc.. –public static Movie[] readData(Movie[] movies) throws IOExc.. E.g.: put file-reads into Auxiliary Class Some ways to define readData: –Create array, pass array address to method, return address –Create array, pass array address to method, return nothing –Create array variable, pass filename to method, return array

23 3 October 2002Web Technology for IE22 Command-Line Arguments The main methods has one parameter –an array of Strings, argv[] –argv.length is # command-line arguments

24 3 October 2002Web Technology for IE23 Example public class Command { public static void main(String argv[]) { Movie m = new Movie(Integer.parseInt(argv[0]), Integer.parseInt(argv[1]), Integer.parseInt(argv[2])); System.out.println("The rating is " + m.rating()); }

25 3 October 2002Web Technology for IE24 Vectors Vectors vs. Arrays –variable in length –insertions can occur at any point –elements can only be class instances Provided by Java’s utility package –import java.util.* –Vector v = new Vector();

26 3 October 2002Web Technology for IE25 Vector Methods Insertions and deletions –v.addElement(m) … adds to back end of vector –v.insertElementAt(m,0) … adds to front of vector –v.removeElementAt(0) … removes first element –v.setElementAt(m,4) … replaces element Access to elements –v.firstElement() –v.lastElement() –v.elementAt(2) Size of Vector – v.size()

27 3 October 2002Web Technology for IE26 A Little Quiz Which methods do you need to represent FIFO queues? Which methods do you need to represent LIFO queues (stacks)?

28 3 October 2002Web Technology for IE27 Vectors as Targets All vector elements are instances of the Object class All vector methods work with instances of the Object class You can work with an element of the vector class by casting the element: –( (Movie) (v.firstElement()) ).rating()

29 3 October 2002Web Technology for IE28 Example import java.io.*; import java.util.*; public class Auxiliaries2 { public static Vector readData(String fileName) throws IOException { FileInputStream stream = new FileInputStream(fileName); InputStreamReader reader = new InputStreamReader(stream); StreamTokenizer tokens = new StreamTokenizer(reader); Vector v = new Vector(); while (tokens.nextToken() != tokens.TT_EOF) { int x = (int) tokens.nval; tokens.nextToken(); int y = (int) tokens.nval; tokens.nextToken(); int z = (int) tokens.nval; v.addElement(new Movie(x,y,z)); } stream.close(); return v; }}

30 3 October 2002Web Technology for IE29 Iterators An iterator maintains a pointer to a place on the parent vector To create an iterator –Iterator i = v.iterator() Some Iterator methods –i.next() … returns element, advances pointer –i.hasNext()

31 3 October 2002Web Technology for IE30 Example import java.io.*; import java.util.*; public class Demonstrate { public static void main(String argv[]) throws IOException { Vector mainVector = Auxiliaries2.readData("input.data"); int size = mainVector.size(); for ( Iterator i = mainVector.iterator(); i.hasNext(); ) { System.out.println(( (Movie) i.next() ).rating()); }

32 3 October 2002Web Technology for IE31 Working with Char & Strings What you can do with Strings Specifying delimiters in File-reads

33 3 October 2002Web Technology for IE32 The String s s.length() … compare this to arrays + concatenates two strings s.charAt(0) extracts first character s.charAt(0)==‘M’ … note single quotes switch(s) … use in switch statements char c = s.charAt(0); default character is ‘\u000’

34 3 October 2002Web Technology for IE33 Example (excerpt) while (tokens.nextToken() != tokens.TT_EOF) { String codeString = tokens.sval; tokens.nextToken(); int x = (int) tokens.nval; tokens.nextToken(); int y = (int) tokens.nval; tokens.nextToken(); int z = (int) tokens.nval; switch (codeString.charAt(0)) { case 'M': v.addElement(new Movie(x,y,z)); break; case 'S': v.addElement(new Symphony(x,y,z)); break; }

35 3 October 2002Web Technology for IE34 Specifying Delimiters To advise the tokens tokenizer to use double quotation marks to delimit strings: –tokens.quoteChar((int) ‘”’) To tell the tokenizer to recognize carriage returns: –tokens.eolIsSignificant(true);

36 3 October 2002Web Technology for IE35 Example (excerpt) tokens.quoteChar((int) '"'); tokens.eolIsSignificant(true); Vector v = new Vector(); while (tokens.nextToken() != tokens.TT_EOF) { String nameString = tokens.sval; tokens.nextToken(); int x = (int) tokens.nval; tokens.nextToken(); int y = (int) tokens.nval; tokens.nextToken(); int z = (int) tokens.nval; Movie m = new Movie(x,y,z); m.title = nameString; if (tokens.nextToken() == tokens.TT_EOL) {} else { m.poster = tokens.sval; tokens.nextToken(); } v.addElement(m); }

37 3 October 2002Web Technology for IE36 Working with O/p File Streams To connect to output file –FileOutputStream stream = new FileOutputStream(“output.data”); To write more than 1-byte-at-a-time –PrintWriter writer = new PrintWriter(stream); It’s good to flush out buffered characters –writer.flush() Close the file –stream.close()

38 3 October 2002Web Technology for IE37 Example (part) import java.io.*; import java.util.*; public class Demonstrate { public static void main(String argv[]) throws IOException { FileOutputStream stream = new FileOutputStream("output.data"); PrintWriter writer = new PrintWriter(stream); Vector mainVector = Auxiliaries4.readData("input3.data"); int size = mainVector.size(); for (Iterator i = mainVector.iterator(); i.hasNext();) { Movie m = (Movie) i.next(); m.writeToFile(writer); writer.println(m.rating()); } writer.flush(); stream.close(); System.out.println("File written"); }}


Download ppt "ISE 582: Web Technology for Industrial Engineering University of Southern California DJE Dept of Industrial and Systems Engineering Lecture 6 JAVA Cup."

Similar presentations


Ads by Google