0

ノードを作成し、文字列配列に格納した文字列で名前を付けようとしていますが、受け入れられません。これを行う方法はありますか?

String strLine;
while ((strLine = br2.readLine()) != null)   {
    String[] arr=strLine.split(",");

    for (int i = 0; i <arr.length; i++) {
        String v = arr[i];
        Node arr[i] =  new Node(v);
    }
}
4

2 に答える 2

2

変数 (または配列要素) の値を Java の変数名として使用することはできません。できる最善の方法はMap<String, Node>、シンボル テーブルとして機能する を作成することです。

String strLine;
Map<String, Node> nodeMap = new HashMap<String, Node>();
while ((strLine = br2.readLine()) != null)   {
    String[] arr=strLine.split(",");

    for (int i = 0; i <arr.length; i++) {
        String v = arr[i];
        nodeMap.put(v, new Node(v));
    }
}

その後Node、名前で取得できます。

Node n = nodeMap.get("some name");
于 2013-04-22T15:48:48.590 に答える
0

ご協力いただきありがとうございます。プログラムを修正して機能させるのに大いに役立ちました。頂点コンストラクターを作成し、新しいノードを追加しない場合は同じ名前のノードがあるかどうかを確認するだけです。

      String strLine;
          while ((strLine = br2.readLine()) != null)   {
          String[] arr=strLine.split(",");

          for (int i = 0; i <arr.length; i++) {
                String v = arr[i];
                String w = arr[++i];
                double weight =Double.parseDouble(arr[++i]);
                if(S.findVertexByName(v) == false)
                {


                    S.addVertex(new Vertex(v));
                    count ++;
                }
                 if(S.findVertexByName(w) == false)
                {


                    S.addVertex(new Vertex(w));
                    count ++;
                }

                S.addEdge(S.getVertexByName(v), S.getVertexByName(w), weight);
               }             
            } 
于 2013-04-23T04:23:31.327 に答える