2012-09-20 21 views
0

我看了其他類似的線程,但我沒有找到答案。將數據動態存儲在數組中

我正在做一個java練習。這是一個有趣的遊戲,它變成了「更聰明」。計算機試圖猜測我想要的是哪種動物。本場比賽看起來就像這樣:

enter image description here

的問題是,我想使用二維數組存儲問題,並答案。但由於該程序可以有無限的問題和答案,我不能使用Array對象來存儲數據,因爲數組不能動態調整大小。

那麼,我們有ArrayList類,這是很好的在運行時存儲對象。但我不認爲我應該在這裏使用二維陣列列表。你將如何處理這種情況?

練習還給我提示,如果我想我可以看看互聯網關於「二叉樹」。我做了,但我只找到了一些我不明白的奇怪的東西。

+0

我不認爲「二叉樹」是你的解決方案,或者,主要問題 – Phorce

回答

0

聽起來像是不錯的情況下使用HashTable<QUESTION,ANIMAL> 你可以動態地添加到它,還可以存儲問題和動物

Hashtable<String,string> ht = new HashTable<String,String>(); 
String animal; 
//adding 
ht["some question"] = "some animal"; 

//getting 
if (ht["some question"] != null) 
    animal = ht["some question"]; 
0

您可以使用Map任何實現存儲您的動物的名稱之間的連接鍵和List作爲價值的答案。但問題是,退出應用程序後,此結果將不存在。所以想想database來存儲你的值。

0

你的問題有點令我困惑,所以這可能不會直接回答你的問題。既然你問過關於二叉樹,我正在編譯這個答案。我懷疑這種情況下二叉樹的適用性。

那麼如果你從二叉樹開始,首先要學習二叉樹的概念和行爲。很簡單。任何與最多2個分支:)

enter image description here

Image Reference

忘記的Java和編程了一會兒。這些小程序向您展示了二叉搜索樹是二叉樹的一個高級版本。

Binary Tree Demol

Binary Tree Demo

後來想想節目。如果你不能閱讀,那麼你無法學習。你應該嘗試閱讀一遍又一遍,以理解的東西:)

現在這裏是一個實際的實現,你可以閱讀。

Binary Tree - Java

2

你可以堅持你的使用多維數組的想法,但是......請嘗試使用二叉樹的暗示。看看下面的binary tree你的答案是16-25(葉節點),其他一切都是問題。

因此,從頂部(根)開始,這個節點可能是「動物有四條腿嗎?」的問題。如果回答「是」然後遍歷(移動)到節點2,否則遍歷到節點3.這意味着在節點2下的所有葉節點是具有四條腿的動物並且節點3下的所有葉節點都是不具有四個腿。

然後,您需要重複處理節點2或3作爲根節點的過程,直到您到達葉節點。

1

所有問題和動物都可以存儲在一棵二叉樹中。使用問題作爲內部節點和和動物作爲。每個答案有兩個後代(樹的分支是2 = 二叉樹)或者另一個答案,如果動物還不知道,或者動物(離開節點)。

如何在Java中表示樹是另一個問題。您可以使用下列類來做到這一點(添加getter/setter方法/構造函數/簡便的方法):

public class Node { 
    // add here other common attributes 
    private Node parent; 
} 

public class Question extends Node { 
    private String text; 
    private Node yes; 
    private Node no; 
} 

public class Animal extends Node { 
    private String name; 
}