0

我正在做一个程序,我需要返回第一次出现的 MyString 的索引。idk 在这种情况下如何使用 indexof。我认为它可能类似于 ch = indexof[] 但我不确定。我在这方面还是新手,api对我帮助不大

/*********************************************************************************
     This program will create classes that do similar operations to the Java String

     Javier Perez
     csc110
     11/5/12
    *********************************************************************************/
    package string.assignment;
    public class MyString
    {

        private char[] array;
        private int size;
        private int max;

        public MyString()
        {
            array = new char[25];
            max = 25;
        }
        public void setString(String newString)
        {
         if(newString.length() > 25)
         {
             System.out.println("/nEnter a number equal or less than 25 " );

         }
         else
         {
          for(int i=0; i < newString.length(); i++)
          {
            array[i] = newString.charAt(i);
          }
         }
        }


        public String toString()
        {
            return new String(array);
        }

        public char charAt(int index)
        {
            return array[index];
        }

        public boolean contains(char ch)
        {
            for(char c: array)
            {
                if(c == ch) return true;
            }
            return false;
        }
        public int indexOf( char ch )
        {
            ch = ch.indexOf();

        }
        return index; 


    }
4

3 回答 3

1

要从数组中获取某个字符的索引,您必须遍历数组,并将每个字符与要检查的字符进行比较。如果任何字符匹配,立即返回索引。

此外,您的最后一个 return 语句应该在您的方法中,否则您的代码将无法编译。

所以,indexOf最简单的方法是这样的: -

public int indexOf( char ch ) {
    for (int i = 0; i < array.length; i++) {
        if (array[i] == ch) {
            return i;   // Character found, return current index
        }
    }
    return -1;    // Character not found. Return -1
}
于 2012-11-13T05:23:38.977 回答
1

迭代您的字符数组,将所需字符与数组索引处的字符匹配。如果找到匹配,则不是index变量中具有默认值的位置,-1并打破循环。从方法中返回index值。

     public int indexOf( char ch ){
        int index = -1;
        for(int i=0; i < array.length; i++){
         if(array[i] == ch){
             index = i;//first match found, stop searching
             break;
         }
       }
       return index; 
     }

这样,它返回字符串的字符数组中字符的第一个匹配位置-1,否则返回.

于 2012-11-13T05:24:57.900 回答
1

如果它确实编译了,那么你的剪切和粘贴就是不好的——那return index最后在做什么?

无论如何 - 我没有使用你自己的charAt,而不仅仅是一个字符比较。

    public int indexOf( char ch )
    {
        int result = -1;
        for(int i = 0; i <  size; i++) {
            if (charAt(i) == ch) {
                result = i;
                break;
            }
        }
        return result;

    }
于 2012-11-13T05:25:46.837 回答