Question: in JAVA -- need to use an arraystack for this and can only manipulate smartstring.java aka the one that says : public class SmartString implements


in JAVA -- need to use an arraystack for this and can only manipulate smartstring.java aka the one that says :
public class SmartString implements SmartStringADT at the beginning
//for SmartStringTest.java:
import static org.junit.Assert.*;
import org.junit.Test;
public class SmartStringTest { //Test insert method @Test public void testinsert1() { SmartString evaluator = new SmartString(); evaluator.insert(0, "Hello"); evaluator.insert(4, ", how are you?"); assertEquals("Hello, how are you?", evaluator.toString()); }
@Test public void testinsert3() { SmartString evaluator = new SmartString("Hello, Goodbye"); assertEquals("Hello, Goodbye", evaluator.toString());
} @Test(expected = InvalidSmartStringException.class) public void testinsert5() { SmartString evaluator = new SmartString("Hi"); evaluator.insert(-1, ", how are you?"); fail("Invalid Smart String action not detected"); } // Test delete method
@Test public void testdelete4() { SmartString evaluator = new SmartString("Hello, Goodbye"); evaluator.delete(5, 20); assertEquals("Hello", evaluator.toString());
} @Test public void testdelete6() { SmartString evaluator = new SmartString("Hello, Goodbye"); evaluator.delete(0, 20); assertEquals("", evaluator.toString());
} @Test(expected = InvalidSmartStringException.class) public void testdelete7() { SmartString evaluator = new SmartString("Hello, Goodbye"); evaluator.delete(20, 25); fail("Invalid Smart String action not detected");
} @Test(expected = InvalidSmartStringException.class) public void testdelete10() { SmartString evaluator = new SmartString("Good morning."); evaluator.delete(-1, 1); fail("Invalid Smart String action not detected"); }
//Test insert and delete public void testinsertAndDelete2() { SmartString evaluator = new SmartString(); evaluator.insert(0, "Hello, how are you?"); evaluator.delete(5, 14); assertEquals("Hello", evaluator.toString()); } //Test undo methods
@Test public void undo3() { SmartString evaluator = new SmartString("Hello, Goodbye"); evaluator.delete(7, 7); evaluator.insert(6, "how are you?"); evaluator.insert(18, " I am great!"); evaluator.delete(21,2); evaluator.insert(20, "'"); evaluator.undo(); evaluator.undo(); evaluator.undo(); assertEquals("Hello, how are you?", evaluator.toString()); }
@Test(expected = InvalidSmartStringException.class) public void undo5() { SmartString evaluator = new SmartString(); evaluator.undo(); fail("Invalid Smart String action not detected"); }
}
/ext class- SmartStringDriver.java
import java.util.InputMismatchException; import java.util.Scanner;
public class SmartStringDriver {
public static void main(String[] args) { //Declare variables and objects Scanner scan = new Scanner(System.in); int action = 1, start = 0, count = 0; String menu = " (1) insert (2) delete (3) Undo (4) Quit"; SmartString str; String insertS = "";
System.out.println("Enter your initial Smart String:"); str = new SmartString(scan.nextLine()); try{ do{ //Prompt for an action - Insert, Delete, Undo, Quit System.out.println("Your smart string is: \t" + str + " \t(indexing from 0 to " + (str.toString().length()-1) + " - length of " + str.toString().length() + ")"); System.out.println(menu); System.out.println("Enter an action"); action = scan.nextInt(); scan.nextLine(); //Determine which action and prompt for necessary input switch (action) { case 1: System.out.println("Enter the position (begin counting at 0) of the letter after which to insert " + insertS); start = scan.nextInt(); scan.nextLine(); System.out.println("Enter the string to insert"); insertS = scan.nextLine();
//Invoke SmartString insert method str.insert(start, insertS); break; case 2: System.out.println("Enter the position (begin counting at 0) of the first letter to delete"); start = scan.nextInt(); System.out.println("Enter the number of letters to delete (count)"); count = scan.nextInt(); //Invoke SmartString delete method str.delete(start, count); break; case 3: //Invoke SmartString undo method str.undo(); break; }
}while (action != 4); } catch(InputMismatchException e) { System.out.println("Entry must be numeric!"); } System.out.println(" Your final Smart String is " + str);
}
}
/ext class - SmartStringException
public class InvalidSmartStringException extends RuntimeException { public InvalidSmartStringException() { super("Unable to change Smart String!! "); } }
/ext class -- SmartString.java
public class SmartString
//last class - SmartStringADT.java
public interface SmartStringADT { public void insert(int pos, String sstring); public void delete(int pos, int count); public void undo(); public String toString(); }
duction For this assignment, you are to develop a SmartString class that supports inserting into a string, deleting a substring from a string, and an undo method. For example, say you have a starting Smart String Now, insert to the end of this String I am doing great! such that you now have Next, after I, delete the space and the a so you have Now, insert an apostrophe to get Now undo twice so you end up with the Smart String Hello, how are you today? Hello, how are you today? I am doing great! Hello, how are you today? Im doing great! Hello, how are you today? I'm doing great! Hello, how are you today? I am doing great! ons: rogram Ins Download SmartStringADT.java, SmartStringDriver.java, InvalidSmartStringException.java, and SmartStringTest.java from Blackboard. These four files are to help with the SmartString class you are to write for program 2 (you may add additional classes - see below - to be used in your SmartString, but this class is the minimum) SmartStringADT.java Your SmartString class must implement this ADT and therefore implement the following methods: public interface SmartStringADT public void insert (int pos, String sstring); public void delete (int pos, int count); public void undo ); public String toString ); Note: the last method, toString, should simply return the SmartString and nothing else! SmartStringDriver.java A driver class that l've provided for you to run quick tests on your SmartString class. InvalidSmartStringException.java The Exception that should be thrown should you encounter an invalid Smart String action such as trying to delete on an empty string
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
