Download ppt - Villanova Department of Computing Sciences

Survey
yes no Was this document useful for you?
   Thank you for your participation!

* Your assessment is very important for improving the workof artificial intelligence, which forms the content of this project

Document related concepts
no text concepts found
Transcript
Iterators and File Input
CSC 1051 – Data Structures and Algorithms I
Dr. Mary-Angela Papalaskari
Department of Computing Sciences
Villanova University
Course website:
www.csc.villanova.edu/~map/1051/
Some slides in this presentation are adapted from the slides accompanying Java Software Solutions by Lewis & Loftus
CSC 1051 M.A. Papalaskari, Villanova University
Outline of Chapter 5
Boolean Expressions
The if Statement
Comparing Data
The while Statement
Iterators
The ArrayList Class
Determining Event Sources
Check Boxes and Radio Buttons
CSC 1051 M.A. Papalaskari, Villanova University
Iterators
• Iterating: to process a collection of
items, one at a time
• Typical iterator methods:
–hasNext() - returns true if there is at
least one more item to process
–next() returns the next item
CSC 1051 M.A. Papalaskari, Villanova University
Iterators
• Several classes in the Java standard class library
are iterators
• The Scanner class is an iterator
– the hasNext method returns true if there is more data
to be scanned
– the next method returns the next scanned token as a
string
• The Scanner class also has variations on the
hasNext method for specific data types (such as
hasNextInt)
CSC 1051 M.A. Papalaskari, Villanova University
Example – What if input is not an int?
System.out.print ("Enter the quantity: ");
quantity = scan.nextInt();
CSC 1051 M.A. Papalaskari, Villanova University
Example – What if input is not an int?
System.out.print ("Enter the quantity: ");
// wrong kind of input?
quantity = scan.nextInt();
CSC 1051 M.A. Papalaskari, Villanova University
Example – What if input is not an int?
System.out.print ("Enter the quantity: ");
while (!scan.hasNextInt()) // wrong kind of input?
{
// first scan the wrong input to get rid of it
String rong = scan.next();
System.out.print(”Try again. Enter the quantity:");
}
// now we know we have an integer, so scan it
quantity = scan.nextInt();
CSC 1051 M.A. Papalaskari, Villanova University
Example – What if input is negative?
do
{
System.out.print ("Enter the quantity: ");
while (!scan.hasNextInt()) // wrong kind of input?
{
// first scan the wrong input to get rid of it
String rong = scan.next();
System.out.print(”Try again. Enter the quantity:");
}
// now we know we have an integer, so scan it
quantity = scan.nextInt();
}
while (quantity <0); // try again if quantity is negative
CSC 1051 M.A. Papalaskari, Villanova University
Using Scanner to read from a file
• Create a “file object”
File myFile = new File("sample.inp");
• Create a Scanner to read from file object
Scanner fileScan = new Scanner (myFile);
• Use next() to obtain next token
• Use nextLine() to obtain entire line of text (until \n)
• Use hasNext() to test whether you are done
CSC 1051 M.A. Papalaskari, Villanova University
File Input Example: FileInput.java
public class FileInput
{
//---------------------------------------------------------------// Reads text from a file and prints it in uppercase.
//---------------------------------------------------------------public static void main (String[] args) throws IOException
{
String line;
File myFile = new File("sample.inp");
Scanner fileScan = new Scanner (myFile));
// Read and process each line of the file
while (fileScan.hasNext())
{
line = fileScan.nextLine();
System.out.println (line.toUpperCase());
}
}
}
CSC 1051 M.A. Papalaskari, Villanova University
File Input Example
public class FileInput
{
//---------------------------------------------------------------sample.inp
// Reads text from a file and prints it in uppercase.
//---------------------------------------------------------------Computers
are useless. They can only give you answers.
public
static
void- main
Pablo Picasso (1881
1973)(String[] args) throws IOException
{
String line;
File myFile = new File("sample.inp");
Scanner fileScan = new Scanner (myFile));
// Read and process each line of the file
while (fileScan.hasNext())
{
line = fileScan.nextLine();
System.out.println (line.toUpperCase());
}
}
}
Run Output
COMPUTERS ARE USELESS. THEY CAN ONLY GIVE YOU ANSWERS.
PABLO PICASSO (1881 - 1973)
CSC 1051 M.A. Papalaskari, Villanova University
Iterators
• The fact that a Scanner is an iterator is particularly
helpful when reading input from a file
• Suppose we wanted to read and process a list of
URLs stored in a file
• One scanner can be set up to read each line of the
input until the end of the file is encountered
• Another scanner can be set up for each URL to
process each part of the path
• See URLDissector.java
CSC 1051 M.A. Papalaskari, Villanova University
//********************************************************************
// URLDissector.java
Author: Lewis/Loftus
//
// Demonstrates the use of Scanner to read file input and parse it
// using alternative delimiters.
//********************************************************************
import java.util.Scanner;
import java.io.*;
public class URLDissector
{
//----------------------------------------------------------------// Reads urls from a file and prints their path components.
//----------------------------------------------------------------public static void main (String[] args) throws IOException
{
String url;
Scanner fileScan, urlScan;
fileScan = new Scanner (new File("urls.inp"));
continue
CSC 1051 M.A. Papalaskari, Villanova University
continue
// Read and process each line of the file
while (fileScan.hasNext())
{
url = fileScan.nextLine();
System.out.println ("URL: " + url);
urlScan = new Scanner (url);
urlScan.useDelimiter("/");
// Print each part of the url
while (urlScan.hasNext())
System.out.println ("
" + urlScan.next());
System.out.println();
}
}
}
CSC 1051 M.A. Papalaskari, Villanova University
Sample Run
continue
URL: www.google.com
www.google.com
// Read and process each line of the file
URL: www.linux.org/info/gnu.html
while (fileScan.hasNext())
www.linux.org
{
url = fileScan.nextLine();
info
System.out.println
gnu.html ("URL: " + url);
urlScan = new Scanner (url);
URL: thelyric.com/calendar/
urlScan.useDelimiter("/");
thelyric.com
calendar
Print
each part of the url
//
while (urlScan.hasNext())
System.out.println
("
" + urlScan.next());
URL: www.cs.vt.edu/undergraduate/about
www.cs.vt.edu
}
}
}
System.out.println();
undergraduate
about
URL: youtube.com/watch?v=EHCRimwRGLs
youtube.com
watch?v=EHCRimwRGLs
CSC 1051 M.A. Papalaskari, Villanova University
Homework
• Review Section 5.5
– Always do all self-review exercises when you review
Some slides in this presentation are adapted from the slides accompanying Java Software Solutions by Lewis & Loftus
CSC 1051 M.A. Papalaskari, Villanova University