簡體   English   中英

如何創建自己的簡單indexOf()方法

[英]How to create a simple indexOf() method of my own

我正在嘗試創建一個簡單的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。為什么會這樣,有沒有更好的方法來編寫此方法?

return i; 根據定義, listArray[i]等於str

因為,無論何時運行,都return str.indexoOf(listArray[i]); ,您已經有str等於listArray[i] 當然,您一直都在獲得0 ,它等效於str.indexOf(str);

您真的不需要這樣做。 您已經在列表中找到了一個與給定字符串相等的元素,只需返回其位置即可:

return i;

您的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;
}

如果滿足if條件,則必須返回i(索引)。

public int indexOf(String str) {

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

我覺得你很困惑。 如果您想從ArrayList中找到一個字符串,並且已經在if(listArray[i].equals(str))找到了該字符串,那么您所要做的就是返回已經找到的索引i。

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

就是答案。

永遠記住:如果您甚至發布listArray的內容或示例以及示例字符串以在其中查找...,這將有助於我們更好地了解您被卡在哪里了

您可以使用for循環執行此操作。

  1. 使用等號檢查字符串是否匹配。
  2. 如果是,則返回索引。
  3. 如果您退出for循環,則返回-1。
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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM