如何创建我自己的简单indexOf()方法

时间:2016-10-19 02:25:30

标签: java for-loop indexof

我试图创建一个简单的indexOf()方法,该方法返回一个int值,并识别字符串数组的字符串(而不是char)。

public int indexOf(String str) {

    /*Getting and return the index of the first 
     *occurrence of the specified String. Return 
     *-1 if string not in the list
     */

    for(int i = 0; i < listArray.length; i++) {
        if(listArray[i].equals(str)) {
            return str.indexOf(listArray[i]);
        }
    }
    return -1;
}

我在Java中使用indexOf()方法进行第一次返回,但它总是返回0.为什么这样,是否有更好的方法来编写此方法?

7 个答案:

答案 0 :(得分:1)

根据定义return i;,{p> listArray[i]等于str

答案 1 :(得分:1)

因为,无论何时运行return str.indexoOf(listArray[i]);,您已经str等于listArray[i]。当然,您始终获得0,它等同于str.indexOf(str);

你真的不需要这样做。您已经在列表中找到了一个等于给定字符串的元素,只返回它的位置:

return i;

答案 2 :(得分:1)

你的for循环很好,问题是当你找到它时,你将返回字符串本身的索引,并且它总是为0。

例如,“hello”位于字符串“hello”的位置0。

你应该像这样返回i

public int indexOf(String str) {

    /* Getting and return the index of the first 
     * occurrence of the specified String. Return 
     * -1 if string not in the list
     */

    for (int i = 0; i < listArray.length; i++) {
        if (listArray[i].equals(str)) {
            // If we get here, it means that the item for position `i` is equal to `str`.
            return i; // just return `i` 
        }
    }

    return -1;
}

答案 3 :(得分:0)

满足if条件时,必须返回i(索引)。

public int indexOf(String str) {

    for(int i = 0; i < listArray.length; i++) {
        if(listArray[i].equals(str)) {
            return i;
        }
    }
    return -1;
}

答案 4 :(得分:0)

我觉得你很困惑。如果你想从ArrayList中找到一个字符串,如果你已经在if(listArray[i].equals(str))找到了字符串,那么你所要做的只是返回你已经找到它的索引i。

for(int i=0;i<listArray.length;i++){
        if(listArray[i].equals(str)){
            return i;
        }
    }

就是答案。

永远记住:如果您发布listArray和示例字符串的内容或样本以便在其中找到...这将有助于我们更好地了解您的确切位置

答案 5 :(得分:0)

您可以使用for循环执行此操作。

  1. 使用equals检查字符串是否匹配。
  2. 如果是,请返回索引。
  3. 如果您退出for循环,请返回-1。

答案 6 :(得分:0)

public int indexOf(String iparam){
    String astring = "" //YOUR OWN STRING
    boolean astat = false;
    List<Integer> alist = null;

    for(int i=0; i<astring.toCharArray().length; i++){
        alist = new ArrayList<>();
        for(int j=0; j<iparam.toCharArray().length; j++){
            try{
                if(astring.toCharArray()[i+j] == iparam.toCharArray()[j]){
                    alist.add(i+j);
                }else{
                    break;
                }
            }catch(Exception ex){
                ex.printStackTrace();
                break;
            }
        }
        if(alist.size() == iparam.toCharArray().length){
            astat = true;
            break;
        }
    }

    if(astat){
        return alist.get(0);
    }else{
        return -1;
    }
}