CS-2852 Data Structures LECTURE 1B Andrew J. Wozniewicz Image copyright © 2010 andyjphoto.com.

21
CS-2852 Data Structures LECTURE 1B Andrew J. Wozniewicz Image copyright © 2010 andyjphoto.com

Transcript of CS-2852 Data Structures LECTURE 1B Andrew J. Wozniewicz Image copyright © 2010 andyjphoto.com.

CS-2852Data StructuresLECTURE 1B

Andrew J. Wozniewicz

Image copyright © 2010 andyjphoto.com

CS-2852 Data Structures, Andrew J. Wozniewicz

Agenda• Arrays– One-Dimensional– Two-Dimensional– Multi-Dimensional

• Stream I/O– Text-file I/O– Binary-file I/O

CS-2852 Data Structures, Andrew J. Wozniewicz

Array Definition

Fixed number of values of a single type arranged consecutively and accessed by index.

CS-2852 Data Structures, Andrew J. Wozniewicz

Array Declarationsint[] anArrayOfInts;byte[] anArrayOfBytes;short[] anArrayOfShorts;long[] anArrayOfLongs;float[] anArrayOfFloats;double[] anArrayOfDoubles;boolean[] anArrayOfBooleans;char[] anArrayOfChars;String[] anArrayOfStrings;

CS-2852 Data Structures, Andrew J. Wozniewicz

One-Dimensional Array

CS-2852 Data Structures, Andrew J. Wozniewicz

Multi-Dimensional Arrays• A multidimensional array is simply an

array whose components are themselves arrays.

• The rows are allowed to vary in length.

Arrays of Arrays of…

CS-2852 Data Structures, Andrew J. Wozniewicz

Multi-Dim Array Declaration

int[][] a2;int[][] a2 = new int[10][5];

String[][] Data;

byte[][] screenPix;byte[][] raggedArray = new byte[5][];

CS-2852 Data Structures, Andrew J. Wozniewicz

Multi-Dim Array Example

class MultiDimArrayDemo { public static void main(String[] args) { String[][] names =

{{"Mr. ", "Mrs. ", "Ms. "}, {"Smith", "Jones"}};

System.out.println(names[0][0] + names[1][0]); //Mr. Smith

System.out.println(names[0][2] + names[1][1]); //Ms. Jones

}}

CS-2852 Data Structures, Andrew J. Wozniewicz

Standard I/O Streams• System.in• System.out• System.err

Opened automatically and available without any further action.

CS-2852 Data Structures, Andrew J. Wozniewicz

Standard I/O Streams• Byte streams instead of character

streams: – System.in

• PrintStream (is-a java.io.OutputStream, is-a java.io.FilterOutputStream):– System.out– System.err

CS-2852 Data Structures, Andrew J. Wozniewicz

Using System.inimport java.io.*;public class StreamIOTest1 {

public static void main(String args[]) throws IOException { System.out.println("Hi!");

System.out.print("Enter your name: "); InputStreamReader cin = new InputStreamReader(System.in); BufferedReader input = new BufferedReader(cin); String name = input.readLine(); System.out.print("Hello "); System.out.println(name); }

}

CS-2852 Data Structures, Andrew J. Wozniewicz

Using Console

import java.io.*;public class ConsoleIOTest1 {

public static void main(String[] args) { Console c = System.console(); if (c == null) { System.err.println("No console."); System.exit(1); } String login = c.readLine("Enter your user name: "); c.printf("Welcome, %1$s.\n", login); }

}

CS-2852 Data Structures, Andrew J. Wozniewicz

Reading Text Filesimport java.io.*;public class TextFileReadDemo {

public static void main(String[] args) throws IOException { String inFileName = args[0]; BufferedReader ins =

new BufferedReader( new FileReader(inFileName) ); do {

String line = ins.readLine();if (line == null) break;System.out.println(line);

} while (true);

}}

CS-2852 Data Structures, Andrew J. Wozniewicz

Writing Text Filesimport java.io.*;public class TextFileWriteDemo {

public static void main(String[] args) throws IOException { String outFileName = args[0]; String[] names = new String[] {"Andrew","Dorota","Martin", "Anna","Mimi","Kiki"}; PrintWriter outs = new PrintWriter(new FileWriter(outFileName)); for (int i = 0; i < names.length; i++) { outs.println(names[i]); } outs.close(); }}

CS-2852 Data Structures, Andrew J. Wozniewicz

Writing Binary Files – Part Iimport java.io.*;

public class BinaryDataWriterOnlyTest1 {

static final String dataFile = "invoicedata.dat"; static final double[] prices = { 2.99, 4.79, 5.99, 3.99, 5.99 }; static final int[] units = { 12, 8, 13, 10, 12 }; static final String[] descriptions = { "Milk", "Cereal", "Potato Chips", "Salsa", "Cheddar Cheese" }; ...}

CS-2852 Data Structures, Andrew J. Wozniewicz

Writing Binary Files – Part IIpublic static void main(String[] args) throws IOException { DataOutputStream out = null; try { out = new DataOutputStream( new BufferedOutputStream( new FileOutputStream(dataFile))); for (int i = 0; i < prices.length; i ++) { out.writeDouble(prices[i]); out.writeInt(units[i]); out.writeUTF(descriptions[i]); } } finally { out.close(); }}

CS-2852 Data Structures, Andrew J. Wozniewicz

Reading Binary Files – Part Iimport java.io.*;

public class BinaryDataReadOnlyTest1 {

static final String dataFile = "invoicedata.dat";

public static void main(String[] args) throws IOException {

DataInputStream in = null;

... <see next slide> ...}

CS-2852 Data Structures, Andrew J. Wozniewicz

Reading Binary Files – Part IIdouble total = 0.0;try { in = new DataInputStream( new BufferedInputStream( new FileInputStream(dataFile)));

double price; int unit; String desc;

... <see next slide> ...

finally { in.close();}

CS-2852 Data Structures, Andrew J. Wozniewicz

Reading Binary Files – Part IItry { while (true) { price = in.readDouble(); unit = in.readInt(); desc = in.readUTF(); System.out.format( "You ordered %d units of %s at $%.2f%n", unit, desc, price); total += unit * price; }} catch (EOFException e) { }System.out.format("For a TOTAL of: $%.2f%n", total);

CS-2852 Data Structures, Andrew J. Wozniewicz

Summary• Arrays

– fixed number of values of a single type– one-, or multi-dimensional

• Stream I/O– Simple console I/O: System.in, System.out– Text-file I/O:

• BufferedReader, FileReader• PrintWriter, FileWriter

– Binary-file I/O• DataInputStream, BufferedInputStream, FileInputStream

• DataOutputStream, BufferedOutputStream, FileOutputStream

Questions?

Image copyright © 2010 andyjphoto.com