Question: Here my code : import java.util.Scanner; public class MyString { private char[] letters; public MyString( String other ) { // MUST BE DEEP COPY: USE
Here my code :
import java.util.Scanner;
public class MyString
{
private char[] letters;
public MyString( String other )
{ // MUST BE DEEP COPY: USE REAL STRING'S BUILT IN METHOD
// TO RETURN A DEEP COPY OF THE THE UNDERLYING CHAR ARRAY
// define a char arry of letter with the lenght of .lenght
int t = other.length();
letters = new char[t];
for(int i=0; i letters[i] = other.charAt(i); } } public MyString( MyString other ) { // DONT do this -> letters = other.letters BECUASE THAT IS SHALLOW CopY!!! // Make a deep copy int t = other.length(); letters = new char[t]; for(int i=0; i letters[i] = other.charAt(i); } } public int length() { return letters.length; // r.length } public char charAt(int index) { return letters[index]; // THE null CHAR } int compareTo(MyString other) // index of { // use a deep compare Don't use the code twice ( Ex // string s1 = "zoo " // string s2 = "zookeeper" // for i = 0; i; ==i //if s1.charAt(i) == s2.charAt(i) // if (this.letter[i] > other.letters[i] ) comparing the fist letter in each string // char a = this.letter[i] // b = other.letter[i] // if (a > b) int a = 0; int b = 0; while (a < this.length() && b < other.length()) { if (letters[a] != other.charAt(b)) { if( ((letters[a]) - other.charAt(b)) < 0 ) return -1; else return 1; } ++a; ++b; } if (a < letters.length) return 1; else if (b < other.length()) return -1; return 0; } public boolean equals(MyString other) // don't use == called the compareto method if it equals 0 then it is equal { if(compareTo(other) == 0) return true; // *** Don't use == hmm.. else // hmm do i even need this return false; // hmm } // LOOKING for c but starting at [startIndex], not at [0] // You should use this in your other Indexof Method public int indexOf(int startIndex, char ch) { for (int i = startIndex; i < this.letters.length; i++) { if (this.letters[i] == ch) { return i; } } return -1; } public int indexOf(MyString other) { // RE-USE the indexOf( int startIndex, char ch) method above in here final int NOT_FOUND = -1; int indexOfFirst = indexOf(0,other.charAt(0)); if (indexOfFirst == NOT_FOUND) { return NOT_FOUND; } for (int i = 1; i if (this.indexOf(indexOfFirst+1,other.charAt(i)) != indexOfFirst + 1) { return NOT_FOUND; } indexOfFirst = this.indexOf(indexOfFirst+1, other.charAt(i)); } return indexOfFirst - 2; } public String toString() { String temp = new String(letters); return temp; } } // END MYSTRING CLASS Tester : public class IndexOfTester { public static void main( String[] args ) { MyString line,key; // ....................................................................... line = new MyString( "dog followed by anything" ); key = new MyString( "dog" ); System.out.println( " 012345678901234567890123"); System.out.println( "LINE: dog followed by anything" ); System.out.println( "KEY: dog" ); System.out.println( "CORRECT ANSWER IS: 0" ); System.out.print( "YOUR ANSWER I S: " ); System.out.println( line.indexOf(key)); // ....................................................................... line = new MyString( "dowg dawwg days gdodg days" ); key = new MyString( "dog" ); System.out.println(" "); System.out.println( " 01234567890123456789012345"); System.out.println( "LINE: dowg dawwg days gdodg days" ); System.out.println( "KEY: dog" ); System.out.println( "CORRECT ANSWER IS: -1" ); System.out.print( "YOUR ANSWER IS: " ); System.out.println( line.indexOf(key) ); // ....................................................................... line = new MyString( "dem dang doggone dayz" ); key = new MyString( "dog" ); System.out.println(" "); System.out.println( " 012345678901234567890"); System.out.println( "LINE: dem dang doggone dayz" ); System.out.println( "KEY: dog" ); System.out.println( "CORRECT ANSWER IS: 9" ); System.out.print( "YOUR ANSWER IS: " ); System.out.println( line.indexOf(key) ); // ....................................................................... line = new MyString( "dem dang doggone dayz" ); key = new MyString( "ding dang dong a dag a diz daz dingle a dangle diggity dawgg!" ); System.out.println(" "); System.out.println( " 012345678901234567890"); System.out.println( "LINE: dem dang doggone dayz" ); System.out.println( "KEY: ding dang dong a dag a diz daz dingle a dangle diggity dawgg!" ); System.out.println( "CORRECT ANSWER IS: -1" ); System.out.print( "YOUR ANSWER IS: "); System.out.println( line.indexOf(key) ); // ....................................................................... line = new MyString( "dog" ); key = new MyString( "dogg" ); System.out.println(" "); System.out.println( " 012"); System.out.println( "LINE: dog" ); System.out.println( "KEY: dogg" ); System.out.println( "CORRECT ANSWER IS: -1" ); System.out.print( "YOUR ANSWER IS: "); System.out.println( line.indexOf(key) ); } // END MAIN } Need help fixing my indexof method : 012345678901234567890 LINE: dem dang doggone dayz KEY: dog CORRECT ANSWER IS: 9 YOUR ANSWER IS: -1
Step by Step Solution
There are 3 Steps involved in it
Get step-by-step solutions from verified subject matter experts
