Description:
In the laboratory, you will be developing an interactive tester for
java.util.Vector. Your tester can be based on a
sample tester I've developed.
Purpose: In this lab, you will gain experience with arrays and Vectors in Java. You will also begin to consider the process of testing your classes.
Since we'll be working with Vectors, make sure that you've
read the
documentation for the Vector class. Consider which
operations may be particularly confusing.
Next, make a copy of VectorTester.java. As always,
you can simply type
% example VectorTester.java
This program is a
primitive tester that you will be extending in this lab. Read through
the code and make sure you understand how it is organized. You may want
to compile and run it. Here is a sample run
% ji VectorTester a val append a value h get this help message l pos look up the value at position pos p print the current vector q quit > a aardvark > p [aardvark] > a zebra > p [aardvark, zebra] > l 0 0: aardvark > l 1 1: zebra > l -1 -1 is an invalid position > l 2 2 is an invalid position > q
Extend the tester so that it is possible to test many of the other
methods provided by
java.util.Vector. At a minimum, you should
develop methods to test
indexOf(Object),
removeElementAt(int), and
setElementAt(Object, int)
In addition, you should include a method of filling a subvector so that it is possible to indicate that we should put the value XXX in all positions between A and B.
If you still have time, see if you can determine other interesting test methods and uses. For example, you might want to find all the positions at which a particular string occurs.
VectorTester.java
Here is the code for the primitive
VectorTester.java
that you may use as the starting point.
import java.io.IOException; import java.lang.ArrayIndexOutOfBoundsException; import java.lang.NumberFormatException; import java.util.Vector; import rebelsky.io.SimpleReader; import rebelsky.io.SimpleOutput; import rebelsky.util.NumberRangeException; /** * Allow interactive testing of thejava.util.Vector. * Used to extend understanding of what that class does in various * situations. * * @author Samuel A. Rebelsky * @author YOUR NAME HERE * @version 1.0 of February 1998 */ public class VectorTester { // +------------+--------------------------------------------------------- // | Attributes | // +------------+ /** * The object used for output. */ protected SimpleOutput out; /** * The object used for input. */ protected SimpleReader in; /** * The vector we're testing. */ protected Vector vec; // +--------------+------------------------------------------------------- // | Constructors | // +--------------+ /** * Build a new tester. */ public VectorTester() { in = new SimpleReader(); out = new SimpleOutput(); vec = new Vector(); } // VectorTester() // +---------+------------------------------------------------------------ // | Methods | // +---------+ /** * Append an element to the current vector. */ public void append(String val) { vec.addElement(val); } // append(String) /** * Look up a value. */ public void lookup(int pos) { try { out.println(pos + ": " + vec.elementAt(pos)); } catch (ArrayIndexOutOfBoundsException e) { out.println(pos + " is an invalid position"); } } // lookup(int) /** * Give instructions for using this program. */ public void giveHelp() { out.println("a val append a value"); out.println("h get this help message"); out.println("l pos look up the value at position pos"); out.println("p print the current vector"); out.println("q quit"); } // giveHelp() /** * Print the current vector. */ public void print() { out.println(vec.toString()); } // print() // +------------+--------------------------------------------------------- // | Attributes | // +------------+ /** * Repeatedly prompt for what to do and then do it. */ public static void main(String[] args) { // The object used to drive the testing VectorTester tester = new VectorTester(); // The base part of the user's response String resp; // The value the user wants to add or retrieve String val; // The index the user wants to use int index; // Provide some basic instructions tester.giveHelp(); // Keep going until we hit the end of file or the user quits. // One exit is done using "break", and the other is done using // a catch of the end-of-file exception, so it looks as if our // loop continues indefinitely. try { LOOP: while (true) { // Print a prompt tester.out.println(); tester.out.print("> "); // Get the first response resp = tester.in.readString(); // Make sure the response is non-empty if (resp.length() == 0) { tester.out.println("You must give a non-empty response."); tester.giveHelp(); continue; } // Determine what to do based on the first character switch (resp.charAt(0)) { case 'a': // append // Get the value and append it val = tester.in.readString(); tester.append(val); break; case 'h': // help tester.giveHelp(); break; case 'l': // lookup // Get the position and look up try { index = tester.in.readInt(); tester.lookup(index); } catch (NumberFormatException e) { tester.out.println("Invalid position"); } catch (NumberRangeException e) { tester.out.println("Invalid position"); } break; case 'p': // print tester.print(); break; case 'q': // quit break LOOP; } // switch // Skip anything else on the line tester.in.readLine(); } //while } // try doing the input catch (IOException e) { // We're done } // catch(IOException) } // main } // VectorTester
Disclaimer Often, these pages were created "on the fly" with little, if any, proofreading. Any or all of the information on the pages may be incorrect. Please contact me if you notice errors.
Source text last modified Tue Feb 10 11:32:00 1998.
This page generated on Tue Feb 10 11:30:15 1998 by SiteWeaver.
Contact our webmaster at rebelsky@math.grin.edu