2016-10-19 13 views
0

int型の値を返し、文字列配列の文字列(char以外)を認識する単純なindexOf()メソッドを作成しようとしています。私の簡単なindexOf()メソッドを作成する方法

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を返す

+2

あなたが自分の 'indexOf'関数を実装しようとしているのであれば、練習の目的を破る組み込み関数の種類を使用しませんか?たぶんあなたは関数が実際に何をしているのか(あるいはあなたのJDKの実装を見て)それをそこから取るべきでしょうか。 – jpw

+2

あなたのコードで他の問題に対処することなく、一度あなたが一生懸命働いて、それを反復したら、ちょうど私を返すほうがいいです:) – MordechayS

+1

何が本当に 'listArray'ですか? – Li357

答えて

0

if条件が満たされた場合は、i(インデックス)を返す必要があります。定義listArray[i]によって

public int indexOf(String str) { 

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

return i;strに等しいです。

0

あなたは混乱していると思います。 ArrayListから文字列を検索したい場合は、既に文字列が見つかっている場合は、if(listArray[i].equals(str))を実行するだけで、すでに見つかったインデックスを返すだけです。

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

です。

は常に覚えている:あなたもそれに見つけるためにあなたのlistArrayとサンプル文字列の内容やサンプルを投稿した場合...それはあなたが

1

を立ち往生している場所を正確に理解することが私たちに、より良いましょうreturn str.indexoOf(listArray[i]);を実行するたびに、ので、 strはすでにlistArray[i]になります。もちろん、0を取得しています。str.indexOf(str);

これは本当に必要ありません。あなたはその位置を返し、与えられた文字列に等しい、リスト内の要素をすでに発見した:

return i; 
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; 
} 
0

あなたはforループを使用してこれを行うことができます。

  1. 文字列がequalsを使用して一致するかどうかを確認します。
  2. 「はい」の場合は、インデックスを返します。
  3. forループから出てきたら、-1を返します。
+0

ありがとうございました!申し訳ありませんが、私はコードやバグとほとんど混同しています... –

関連する問題