私の配列内のオブジェクトが以下の3つの方法で移動するシミュレーションを実行しています。私のシミュレーションは多くの反復を経ています(約30回)。つまり、私はmove()を30回実行しています。1回の呼び出しでメソッドを呼び出す
-1
A
答えて
0
各動物が繰り返し1回だけ動くようにするには、すでに移動した動物をマークする必要があります。
今では、Ecosystemクラス全体に対して1つのブール値varしかありません。移動した各オブジェクトをマークするには不十分です。
Setを使用して、すでに移動した動物を保存することができます。
生態系のクラスでこれを追加します。
private Set<Animal> alreadyMoved;
を次に、各サイクルの始めに、ゼロからスタートする新しいセットを作成します。moveメソッドで次に
alreadyMoved = new HashSet<Animal>();
:
public synchronized void move() {
for (int i = 0; i < row; i++) {
for (int j = 0; j < column; j++) {
if (ecosystem[i][j] != null) {
if (!alreadyMoved.contains(ecosystem[i][j]) {
// move it
alreadyMoved.add(ecosystem[i][j]);
}
}
}
}
}
0
これを行うには、いくつかの方法があります。
代わりに、ブールの3210、各動物をそれが中に移動した最後の反復(NO)を含有する余分な整数フィールドを与える。
「がこの反復」およびその他を表す2つの
ecosystem
アレイ、いずれかが「最後の反復」を表す。新しい反復の開始時にそれらを反転して "this iteration"配列をヌルにするか、単に新しい配列を割り当てて、古い配列をGCにします。
関連する問題
- 1. 3回の再帰呼び出しを1行で呼び出しますか?
- 2. 他のオブジェクトからメソッドを呼び出すメソッド呼び出し
- 3. Reactjs AJAX呼び出しを複数回呼び出す(1回のクリックで1回だけ!)
- 4. メソッドの呼び出しが複数回
- 5. JavaScriptメソッド呼び出しは、ScriptManagerを使用して1回のみ呼び出すことができます
- 6. Spring AOP @AfterThrowing - メソッドの詳細を呼び出すメソッドの呼び出し(メソッドを呼び出さない)
- 7. メソッド呼び出し
- 8. Windowsサービスでのメソッド呼び出しの呼び出し
- 9. 各メソッド呼び出しでjQueryがコンストラクタを呼び出す
- 10. 角度4 Subscribeメソッド呼び出しを複数回呼び出し
- 11. クリックビュー内でメソッドを呼び出す複数回呼び出される
- 12. dispatchKeyEventメソッドを2回呼び出す
- 13. copyValuesToRangeメソッドを2回呼び出す
- 14. すべてのdef呼び出しのRuby呼び出しメソッド?
- 15. アプリケーションのメソッド呼び出しを呼び出す
- 16. IMethodのメソッド呼び出しを呼び出すCallHierarchy
- 17. Android :: Broadcasr Receiverクラスを呼び出すメソッドの呼び出し?
- 18. メソッドの呼び出しを呼び出すC#
- 19. 具体的なクラスのメソッド呼び出しを呼び出す
- 20. Pythonは__init __()メソッドを1回だけ呼び出します
- 21. 呼び出しPersistence.createEntityManagerFactory> 1回
- 22. メソッドをアプリケーションライフタイム全体で1回だけ呼び出す
- 23. コントローラ内でメソッドを1回呼び出す方法
- 24. ToList()メソッド呼び出し時にデータベースを呼び出す
- 25. C#でメソッド/呼び出しを別のメソッドから呼び出す方法は?
- 26. PHPunitメソッドが1回呼び出されると予想され、実際に0回呼び出されます
- 27. Finagle + Thrift:メソッド呼び出しの呼び出し
- 28. FacebookSdk.sdkInitialize - それを1回呼び出すか、アクティビティごとに1回呼び出しますか?
- 29. メソッド呼び出し元と呼び出し先、循環クラス・レベルのメソッド呼び出し
- 30. デイジーチェーン関数呼び出し(メソッド1はメソッド2を呼び出し、メソッド2はメソッド3を呼び出します)
はい、ブーリアンフラグが機能するはずですが、なぜ機能していないのかは、わかりやすいものではありません。有効な[mcve]を作成して投稿することを検討して、問題が正しく機能しない理由を確認してください。これは*小規模プログラムで、あなたの質問をコード形式のテキストとして掲示します。変更せずにコンパイルして実行するコードと、問題を直接示すコードです。 –
ブール値をオブジェクトに移動します。各配列のオブジェクトリストをループします。または、Map
@HovercraftFullOfEelsありがとうございます。私はいくつかの追加コードを追加しました。私はCarnivoreクラスにあるmove()の実装を含め、すべてを一緒に呼び出すcycle()メソッドも含めました。まだこれを理解しようとしています!どんな助けもありがとうございます。 – mmuso