2012-02-23 14 views
1

未知の検索割り当てを行っていますが、私は立ち往生しています。私はそれの90%がしかし、私がしようとしています、作業していJava最短コストパス:(.txt)テキストファイルからの情報なし/情報付き検索

http://i.stack.imgur.com/d4n18.png

1).txtファイルから代わりのコード内からのデータ(都市やマイル)をロードします。 2)プログラムは3つのコマンドライン入力引数を取ることを許可:入力ファイル名、起点都市、および目的地の都市

例:findroute inputFilename originCity DestinationCity

コマンドラインの例:ミュンヘンベルリンinput1.txt findroute

これは私が今持っているコードの一部です:私はちょうどこれを行う方法を見つけ出すことはできません

package graph; 
    import java.util.Formatter; 
    import java.util.List; 
    import bisearch.UniformCostSearch; 
    import search.Action; 

public class findRoute { 
    /** 
    * finds the shortest path 
    */ 




     public static void main(final String[] args) { 
      Graph graph = findRoute.Map(); 

      GraphStateSpaceSearchProblem sssp = new GraphStateSpaceSearchProblem(
       graph, " Zerind ", " Oradea "); 

      bisearch.Search bisearch = new UniformCostSearch(); 
      List<Action> actions = bisearch.search(sssp); 
    findRoute.printOutput(bisearch.nodesExplored(), actions); 





    } 


    /** 
    * prints the path found 
    */ 
    private static void printOutput(final int nodesExplored, 
     final List<Action> actions) { 


     double cost = 0; 
     for (final Action action : actions) 

    cost += action.cost(); 
     System.out.println("Distance: " + new Formatter().format("%.2f", cost)+" m"); 
     System.out.println ("Route: "); 

     for (final Action action : actions) 

     System.out.println(action); 

    } 



    /** 
    * creates a map of as a Graph 

    */ 


    private static Graph Map() { 
     final Graph graph = new Graph(); 

     graph.addUndirectedEdge("Oradea", "Zerind", 71); 
     graph.addUndirectedEdge("Zerind", "Arad", 75); 
     graph.addUndirectedEdge("Arad", "Sibiu", 140); 
     graph.addUndirectedEdge("Sibiu", "Oradea", 151); 
     graph.addUndirectedEdge("Timisoara", "Arad", 118); 
     graph.addUndirectedEdge("Timisoara", "Lugoj", 111); 
     graph.addUndirectedEdge("Lugoj", "Mehadia", 70); 
     graph.addUndirectedEdge("Mehadia", "Dobreta", 75); 
     graph.addUndirectedEdge("Dobreta", "Craiova", 120); 
     graph.addUndirectedEdge("Sibiu", "Fagaras", 99); 
     graph.addUndirectedEdge("Fagaras", "Bucharest", 211); 
     graph.addUndirectedEdge("Sibiu", "Rimnicu Vilcea", 80); 
     graph.addUndirectedEdge("Pitesti", "Rimnicu Vilcea", 97); 
     graph.addUndirectedEdge("Craiova", "Rimnicu Vilcea", 146); 
     graph.addUndirectedEdge("Craiova", "Pitesti", 136); 
     graph.addUndirectedEdge("Pitesti", "Bucharest", 101); 
     graph.addUndirectedEdge("Bucharest", "Giurgiu", 90); 
     graph.addUndirectedEdge("Bucharest", "Urziceni", 85); 
     graph.addUndirectedEdge("Urziceni", "Hirsova", 98); 
     graph.addUndirectedEdge("Hirsova", "Eforie", 86); 
     graph.addUndirectedEdge("Urziceni", "Vaslui", 142); 
     graph.addUndirectedEdge("Vaslui", "Iasi", 92); 
     graph.addUndirectedEdge("Neamt", "Iasi", 87); 
     return graph; 


} 

} 

。どんな助けでも大歓迎です。事前

答えて

0

1)、行毎にファイルを読んで、あなたの区切り文字によって行を分割し、あなたが行くことが良いことがありますのおかげで()

2)プログラムが既にパラメータを受け入れることを行う方法をグーグル。それらはあなたのargs配列にあります。 (args [0]、args [1] ...)

0

args []を使う必要があります。コマンドラインパラメータはargs []変数を介してjavaプログラムに配列として渡されます。

args[0] = inputFilename 
args[1] = originCity 
args[2] = DestinationCity 

ファイルを解析してマップを入力します。それ以外のコードはそのまま動作するはずです。

+1

通常、宿題では、説明に絶対に重要でない限り、コードを提供する代わりに概念を説明することをおすすめします。 – Woot4Moo

+0

@ Woot4Moo - それは彼が必要とするコードではなく、単にargs配列のイラストです...私はすべて宿題タグに関する完全な解決策を投稿していないのですが、これはそれにはほど遠いです。 – prelic

0

パート1では、JavaがOOBを提供するFileオブジェクトを使用します。そのファイルからFileReaderオブジェクトを推薦する値を読み込む必要があります。 Fileオブジェクトをインスタンス化するときは、args文字列配列からインデックスルックアップを使用する必要があります。

2番目の部分については、プログラムが既にそれを行います。引数の数を制限したい場合、args.length変数を、あなたが望む入力パラメータと照合する必要があります。

関連する問題