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 回答