2012-10-16 28 views
0

我使用Treeset到邊緣排序,下面的代碼:如何在java中使用treeset的用戶輸入?

TreeSet<Edge> edges = new TreeSet<Edge>(); 

//Sample problem - replace these values with your problem set 
edges.add(new Edge("0", "1", 2)); 
edges.add(new Edge("0", "3", 1)); 
edges.add(new Edge("1", "2", 3)); 
edges.add(new Edge("2", "3", 5)); 
edges.add(new Edge("2", "4", 7)); 
edges.add(new Edge("3", "4", 6)); 
edges.add(new Edge("4", "5", 4)); 

System.out.println("Graph"); 
KruskalEdges vv = new KruskalEdges(); 

for (Edge edge : edges) { 
    System.out.println(edge); 
    vv.insertEdge(edge); 
} 

我只是想借此來代替靜態給到edges.add

+0

用於從用戶鍵盤讀取輸入的示例:http://www.java2s.com/Code/JavaAPI/java.lang/Systeminread.htm – Mik378

+0

謝謝,但我想把它作爲帶有前兩個參數的圖形圖座標和第三個將是重量,以便我可以實現MST算法。 – Mac

回答

3

從用戶輸入如果您Edge構造函數有兩個String參數和一個int參數然後簡單地閱讀兩個String和一個int使用Scanner,將它們存儲在變量中,然後將它們傳遞給Edge構造函數。

0

您可以使用掃描儀在運行時獲得輸入

//From command line 
Scanner in = new Scanner(System.in); 


//From file 
Scanner sc = new Scanner(new File("edges")); 
while (sc.hasNextLong()) {...} 


你然後必須實例化這些值邊緣對象,並在TreeSet中使用它

0

使用循環提示輸入3個參數每個Edge實例(你可以通過Scanner類來實現。)。然後處理這些參數(我的意思是使用String類函數等)來構造實例。最後,將每個實例添加到您在相同循環中設置的邊緣。示例代碼:

TreeSet<Edge> edges = new TreeSet<Edge>(); 

Scanner scanner = new Scanner(System.in); 
int counter = 10; 

while (counter > 0) 
{ 
    System.out.println("Enter edge parameters:"); 
    String temp = scanner.nextLine(); 
    String[] params = temp.split("-"); 
    edges.add(new Edge(params[0], params[1], Integer.valueOf(params[2]))); 
    counter--; 
} 

注意:上面的循環執行了10次,它只是爲了演示,你可以自己操縱的循環。它期望用戶輸入破折號( - )作爲參數的分隔符。有效的用戶輸入可能類似於:24-5-6並且還要小​​心錯誤處理,不匹配的用戶輸入不在此代碼中處理。