有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java中断for循环,返回4个结果,而不是2个

我正在尝试解析一个XML文档。我得到了正确返回的所有结果,但当我在嵌入式for循环中解析它们时,事情就不太对劲了

我想要的是:

Var #1 
Var #2

我得到的是:

Var #1
Var #2
Var #1
Var #2

我有一个初始for循环来遍历主文档,第一次得到所有变量,然后我有第二个for循环,它遍历文档的子元素。如上所述,for循环中的for循环返回所有正确的结果,但会打印两次

        NodeList nodes = doc.getElementsByTagName("update");

        for (int i=0; i < nodes.getLength(); i++)
        {
            Node node = nodes.item(i); 

            if (node.getNodeType() == Node.ELEMENT_NODE) 
            {

                if (update_type.equals("JGRP"))
                { 
                    String user = getValue("first-name", element) + " " + getValue("last-name", element);                                               
                    NodeList cNodes = doc.getElementsByTagName("member-group");

                    for (int z=0; z < cNodes.getLength(); z++)
                    { 
                        Node cNode = cNodes.item(z);

                        if (cNode.getNodeType() == Node.ELEMENT_NODE)
                        {   
                            Element cElement = (Element)cNode; 
                            String group_name = getValue("name",cElement);
                            g_name = group_name; 

                            System.out.println(g_name);
                        }
                    }                           
                }
            }
        }

任何建议都将不胜感激


共 (1) 个答案

  1. # 1 楼答案

    我终于明白了

        // This loop runs twice total
        for (int i=0; i < nodes.getLength(); i++)
        {
            ...
    
            if (node.getNodeType() == Node.ELEMENT_NODE) 
            {
                ...
                if (update_type.equals("JGRP"))
                { 
                    ...
                    // This loop runs twice total
                    for (int z=0; z < cNodes.getLength(); z++)
                    { 
                        ...
    
                        if (cNode.getNodeType() == Node.ELEMENT_NODE)
                        {   
                            ...
    
                            System.out.println(g_name);
                        }
                    }                           
                }
            }
        }
    

    如果你的外循环运行了两次,那么你的内循环总共运行了4次。所以它总共打印了4个元素,每个元素两次