Dismiss Notice
Join Physics Forums Today!
The friendliest, high quality science and math community on the planet! Everyone who loves science is here!

Help with string method

  1. Jun 1, 2007 #1
    Hi. I just started Java and need some help with a method involving strings.

    I need to return the index of the start of the first occurence of one string (parameter two) in another string (parameter one).

    I tried this:
    Code (Text):

    public static int findInString (String text1, String text2)
    int length1 = text1.length();
    int length2 = text2.length();
    int index;
    char x = text2.charAt(0);
    for (index = 0; index < length1; index++)
    char y = text1.charAt(index);
    if (x == y)
    text 1 = text1.substring(index, index + length2);
    if (text1 == text2)
    return index;
    if (index == length1)
    return -1;
    NOTE: I cannot use the indexOf method. It's for a programming class at a local university and he won't let us use it. So I need to find an alternative way to basically do what it does.

    My code compiles; it's just wrong semantically. Any help would be appreciated.
  2. jcsd
  3. Jun 2, 2007 #2


    User Avatar
    Homework Helper

    Search indexes should be limited to length1 - length2, no point in searching past the point where there aren't enough bytes remaining in text1. If length1 < length2, then no match is possible.

    Since this is just a test program, might as well create a string compare function, and then call it to compare &text1[test index], with text2, length of test2, until you get a match or increment test index > (length1-length2).
  4. Jun 2, 2007 #3


    User Avatar
    Science Advisor
    Homework Helper

    I think the basic problem is you are trying to use text1 for two different things. When you assign text1 to a substring of itself, you delete the end of the original string. For example you won't find xyz in abxcdxyz, because you find the first x and then overwrite the long string with xcd.
    Last edited: Jun 2, 2007
Share this great discussion with others via Reddit, Google+, Twitter, or Facebook