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

//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

1 Expert Approved Answer
Step: 1 Unlock blur-text-image
Question Has Been Solved by an Expert!

Get step-by-step solutions from verified subject matter experts

Step: 2 Unlock
Step: 3 Unlock

Students Have Also Explored These Related Databases Questions!