2012-04-30 14 views
0

実装しようとしているメソッドの再帰を使用する必要があります。問題は再帰ですが、私は思ったとおりに動作していません。私が持っているコードは次のとおりです。再帰で何が問題になっていますか?

public void printer(int level) { 
    System.out.println("A Car " + getId()); 
    for (int j=0; j< carTypes.size(); j++) { 

     carTypes.get(j).printer(Index.get(j)+1); 
     if (carTypes.get(j) instanceof Toyota) { 
      level = 1; 
     } 
     else { 
      level = 1; 
      for (int i = 0; i <= j; i++){ 
       if (j == Index.size()-1) 
        break; 
       if (Index.get(i) == Index.get(j+1)) { 
        number++; 
       } 
      } 
     } 
     System.out.println("Is recursion working right?"); 

    }//End of for loop 
} 

私が午前問題は、私はそのcarTypes.get後のすべてが(j)を.printer(index.GETを(J)+1)期待していたです。無視され、メソッドはループされます。私はこれが起こるかどうかを知っている、私は私のforループに対処する別のものを見つける必要がありますが、今のところ、私はちょうど再帰が働きたい。私が提供した情報が十分であるかどうかは完全にはわかりません。もっと必要な情報があれば、もっと喜んで情報を提供してください。

おかげ

+0

carTypes.get(j).printer(Index.get(j)+1); 

を交換してください –

+0

私は、いくつかのタスクが1つの方法に混乱していると感じています。代わりに、単一の車を印刷する方法を知っている低レベルのメソッドと、一度に1つずつ、多くの車で低レベルのメソッドを呼び出す方法を知っている高水準のメソッドを用意する必要がありますか? – sarnold

+0

私は基本的にはEclipseのデバッグパースペクティブをオープンしています(私はプログラミングにはまだまだ新規です)。何が起こっているのか正確に見てみましたが、それでも私に何か具体的な理由はありませんでした。 。 – Ester

答えて

2

再帰:自身からメソッドを呼び出します。

今、carTypes.get(j).printer(Index.get(j)+1);今、この行は、別のオブジェクトで毎回printerメソッドを呼び出します。

実際、同じprinterメソッドを呼び出すことはないため、再帰は起こっていません。

EDIT:

私はこの問題が発生した場合、私は別のforループが、今の私に対処するために見つける必要があります知っている、私は再帰作業をしたいです。

あなたがこれまでどのようなデバッグを行っている?

printer(Index.get(j)+1); 
+0

私は今それを得る。ありがとう。私はそれを動作させることをどのように提案しますか? – Ester

+0

編集した部分を確認してください。 – Azodious

+0

ああ、ありがとう:)それは今働いている – Ester

関連する問題