Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

public class DoubleArraySeq implements Cloneable { // Invariant of the DoubleArraySeq class: // 1. The number of elements in the sequences is in the instance

public class DoubleArraySeq implements Cloneable { // Invariant of the DoubleArraySeq class: // 1. The number of elements in the sequences is in the instance variable // manyItems. // 2. For an empty sequence (with no elements), we do not care what is // stored in any of data; for a non-empty sequence, the elements of the // sequence are stored in data[0] through data[manyItems-1], and we // don care what in the rest of data. // 3. If there is a current element, then it lies in data[currentIndex]; // if there is no current element, then currentIndex equals manyItems. private double[ ] data; private int manyItems; private int currentIndex; /** * Initialize an empty sequence with an initial capacity of 10. Note that * the addAfter and addBefore methods work * efficiently (without needing more memory) until this capacity is reached. * @param - none * @postcondition * This sequence is empty and has an initial capacity of 10. * @exception OutOfMemoryError * Indicates insufficient memory for: * new double[10]. **/ public DoubleArraySeq( ) { // Implemented by student. }

/** * Initialize an empty sequence with a specified initial capacity. Note that * the addAfter and addBefore methods work * efficiently (without needing more memory) until this capacity is reached. * @param initialCapacity * the initial capacity of this sequence * @precondition * initialCapacity is non-negative. * @postcondition * This sequence is empty and has the given initial capacity. * @exception IllegalArgumentException * Indicates that initialCapacity is negative. * @exception OutOfMemoryError * Indicates insufficient memory for: * new double[initialCapacity]. **/ public DoubleArraySeq(int initialCapacity) { // Implemented by student. } /** * Add a new element to this sequence, after the current element. * If the new element would take this sequence beyond its current capacity, * then the capacity is increased before adding the new element. * @param element * the new element that is being added * @postcondition * A new copy of the element has been added to this sequence. If there was * a current element, then the new element is placed after the current * element. If there was no current element, then the new element is placed * at the end of the sequence. In all cases, the new element becomes the * new current element of this sequence. * @exception OutOfMemoryError * Indicates insufficient memory for increasing the sequence's capacity. * @note * An attempt to increase the capacity beyond * Integer.MAX_VALUE will cause the sequence to fail with an * arithmetic overflow. **/ public void addAfter(double element) { // Implemented by student. }

/** * Add a new element to this sequence, before the current element. * If the new element would take this sequence beyond its current capacity, * then the capacity is increased before adding the new element. * @param element * the new element that is being added * @postcondition * A new copy of the element has been added to this sequence. If there was * a current element, then the new element is placed before the current * element. If there was no current element, then the new element is placed * at the start of the sequence. In all cases, the new element becomes the * new current element of this sequence. * @exception OutOfMemoryError * Indicates insufficient memory for increasing the sequence's capacity. * @note * An attempt to increase the capacity beyond * Integer.MAX_VALUE will cause the sequence to fail with an * arithmetic overflow. **/ public void addBefore(double element) { // Implemented by student. } /** * Place the contents of another sequence at the end of this sequence. * @param addend * a sequence whose contents will be placed at the end of this sequence * @precondition * The parameter, addend, is not null. * @postcondition * The elements from addend have been placed at the end of * this sequence. The current element of this sequence remains where it * was, and the addend is also unchanged. * @exception NullPointerException * Indicates that addend is null. * @exception OutOfMemoryError * Indicates insufficient memory to increase the size of this sequence. * @note * An attempt to increase the capacity beyond * Integer.MAX_VALUE will cause an arithmetic overflow * that will cause the sequence to fail. **/ public void addAll(DoubleArraySeq addend) { // Implemented by student. } /** * Move forward, so that the current element is now the next element in * this sequence. * @param - none * @precondition * isCurrent() returns true. * @postcondition * If the current element was already the end element of this sequence * (with nothing after it), then there is no longer any current element. * Otherwise, the new element is the element immediately after the * original current element. * @exception IllegalStateException * Indicates that there is no current element, so * advance may not be called. **/ public void advance( ) { // Implemented by student. } /** * Generate a copy of this sequence. * @param - none * @return * The return value is a copy of this sequence. Subsequent changes to the * copy will not affect the original, nor vice versa. * @exception OutOfMemoryError * Indicates insufficient memory for creating the clone. **/ public DoubleArraySeq clone( ) { // Clone a DoubleArraySeq object. DoubleArraySeq answer; try { answer = (DoubleArraySeq) super.clone( ); } catch (CloneNotSupportedException e) { // This exception should not occur. But if it does, it would probably // indicate a programming error that made super.clone unavailable. // The most common error would be forgetting the "Implements Cloneable" // clause at the start of this class. throw new RuntimeException ("This class does not implement Cloneable"); } answer.data = data.clone( ); return answer; }

/** * Create a new sequence that contains all the elements from one sequence * followed by another. * @param s1 * the first of two sequences * @param s2 * the second of two sequences * @precondition * Neither s1 nor s2 is null. * @return * a new sequence that has the elements of s1 followed by the * elements of s2 (with no current element) * @exception NullPointerException. * Indicates that one of the arguments is null. * @exception OutOfMemoryError * Indicates insufficient memory for the new sequence. * @note * An attempt to create a sequence with a capacity beyond * Integer.MAX_VALUE will cause an arithmetic overflow * that will cause the sequence to fail. **/ public static DoubleArraySeq concatenation(DoubleArraySeq s1, DoubleArraySeq s2) { // Implemented by student. }

/** * Change the current capacity of this sequence. * @param minimumCapacity * the new capacity for this sequence * @postcondition * This sequence's capacity has been changed to at least minimumCapacity. * If the capacity was already at or greater than minimumCapacity, * then the capacity is left unchanged. * @exception OutOfMemoryError * Indicates insufficient memory for: new int[minimumCapacity]. **/ public void ensureCapacity(int minimumCapacity) { // Implemented by student. }

/** * Accessor method to get the current capacity of this sequence. * The add method works efficiently (without needing * more memory) until this capacity is reached. * @param - none * @return * the current capacity of this sequence **/ public int getCapacity( ) { // Implemented by student. }

/** * Accessor method to get the current element of this sequence. * @param - none * @precondition * isCurrent() returns true. * @return * the current element of this sequence * @exception IllegalStateException * Indicates that there is no current element, so * getCurrent may not be called. **/ public double getCurrent( ) { // Implemented by student. }

/** * Accessor method to determine whether this sequence has a specified * current element that can be retrieved with the * getCurrent method. * @param - none * @return * true (there is a current element) or false (there is no current element at the moment) **/ public boolean isCurrent( ) { // Implemented by student. } /** * Remove the current element from this sequence. * @param - none * @precondition * isCurrent() returns true. * @postcondition * The current element has been removed from this sequence, and the * following element (if there is one) is now the new current element. * If there was no following element, then there is now no current * element. * @exception IllegalStateException * Indicates that there is no current element, so * removeCurrent may not be called. **/ public void removeCurrent( ) { // Implemented by student. } /** * Determine the number of elements in this sequence. * @param - none * @return * the number of elements in this sequence **/ public int size( ) { // Implemented by student. } /** * Set the current element at the front of this sequence. * @param - none * @postcondition * The front element of this sequence is now the current element (but * if this sequence has no elements at all, then there is no current * element). **/ public void start( ) { // Implemented by student. } /** * Reduce the current capacity of this sequence to its actual size (i.e., the * number of elements it contains). * @param - none * @postcondition * This sequence's capacity has been changed to its current size. * @exception OutOfMemoryError * Indicates insufficient memory for altering the capacity. **/ public void trimToSize( ) { double[ ] trimmedArray; if (data.length != manyItems) { trimmedArray = new double[manyItems]; System.arraycopy(data, 0, trimmedArray, 0, manyItems); data = trimmedArray; } } }

void addFront( double )

  • A method to add a new element at the front of the sequence and make it the current element.

void removeFront( )

  • A method to remove the element at the front of the sequence.
  • If there is only one element, remove it and make the current element null, otherwise make the current element the new front element.
  • Throw an IllegalStateException if the sequence is empty when the method is called.

void setCurrent ( int n )

  • A method that makes the nth element become the current element.
  • Note: This n value is not an index value. If n equals one, then the current element is at location zero.
  • Throw an IllegalStateException if the sequence is empty.
  • Throw an IllegalArgumentException if n does not represent a valid location in the array.

double getElement ( int n )

  • A method that returns the nth element of the sequence.
  • Make current element this nth element.
  • NOTE: n is not the index value. (if the value of n that is passed in is 4, that means index 3 in the array)
  • Throw an IllegalStateException if the sequence is empty.
  • Throw an IllegalArgumentException if n is greater than the sequence size, or if n is zero or negative.

boolean equals ( Object )

  • Method that returns true if sequence is the same length and order and data. (The current element could be different)
  • Use the proper format for the equals method shown in the book, we are overriding the equals method from the Object class.

String toString ( )

  • creates a string of all elements in order separated by a space.
  • Use start( ), advance( ) and getCurrent( ) to progress through data
  • Throw an IllegalStateException if the sequence is empty.
  • IMPORTANT: The methods above will change the value of the current element, but the current element should be changed by this method. Make sure to reset to its original value by the end of this method.
  • Remember : toString does not output to screen, it returns a string

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Data Analysis Using SQL And Excel

Authors: Gordon S Linoff

2nd Edition

111902143X, 9781119021438

More Books

Students also viewed these Databases questions