我可以使用Java中的String数组中的变量来命名节点吗?

时间:2013-04-22 15:43:38

标签: java arrays string

我正在尝试创建一个节点并使用我存储在字符串数组中的字符串命名它,但它不会接受它。有没有办法做到这一点?

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);
    }
}

2 个答案:

答案 0 :(得分: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");

答案 1 :(得分: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);
               }             
            }