Java:令牌上的语法错误"否则"

时间:2016-03-23 03:22:47

标签: java if-statement syntax

好的,我已经查看了很多堆栈溢出问题和相当多的博客,但仍然无法找到答案。不,它看起来不像是缺少大括号,有额外的分号,或者我知道的任何其他拼写错误。为什么'其他'显示错误?

// check if myid property is set and create it if not
String subtopicMyId = subtopicNode.hasProperty("myid") ? subtopicNode.getProperty("myid").getString() : "";
if (subtopicMyId.equals("")) {
    // generate new myid and check it against the list of existing IDs until a unique one is generated
    do {
        // generate new myid
        Object topicmyidobj = new Object();
        subtopicMyId = topicmyidobj.toString().split("@")[1].toUpperCase();
    } while ( subtopicMyId.equals("") || existingMyIds.contains(subtopicMyId) );
    // set myid on this node
    subtopicNode.setProperty("myid", subtopicMyId);
    subtopicNode.setProperty("parentid", topicMyId);
    subtopicNode.save();
    // add new myid to list of existsing IDs so that it doesn't get reused
    existingMyIds.add(subtopicMyId);
} else {
    // if subtopic has myid already
    // compare the parentid to the parent myid
    String subtopicParentId = subtopicNode.getProperty("parentid").getString();
    if (!subtopicParentId.equals(topicMyId)) {
        // they don't match
        String subtopicNodePath = subtopicNode.getPath();
        String topicNodePath = topicNode.getPath();
        // find path to topic node that has matching myid to this subtopic's parentid
        // loop through parent nodes
        NodeIterator reorgTopicsIter = compNode.getNodes();
        while (reorgTopicsIter.hasNext()) {
            // loop through parent objects to find a matching myid for parentid
            Node reorgTopicNode = (Node)reorgTopicsIter.next();
            // get the myid property from this node, if it exists, and compare the parentid to it
            String reorgTopicMyId = reorgTopicNode.hasProperty("myid") ? reorgTopicNode.getProperty("myid").getString() : "";
            if (!reorgTopicMyId.equals("")) {
                // parent myid exists and is not blank
                if (reorgTopicMyId.equals(subtopicParentId)) {
                    // parentid does match parent myid
                    String reorgTopicNodePath = reorgTopicNode.getPath();
                    // determine how many parent objects there are
                    int reorgTopicSubtopics = 0;
                    NodeIterator reorgSubtopicsIter = reorgTopicNode.getNodes();
                    while (reorgSubtopicsIter.hasNext()) {
                        Node reorgSubtopicNode = (Node)reorgSubtopicsIter.next();
                        reorgTopicSubtopics++;
                    }
                    // set source to this child object
                    String source = subtopicNode.getPath();
                    // set destination to matching parent object with new child object appended
                    String destination = reorgTopicNodePath + "/subtopic-" + (reorgTopicSubtopics + 1);
                    // create session for move and perform move
                    Session session = resourceResolver.adaptTo(Session.class);
                    session.move(source, destination);
                    session.save();
                } else {
                    // parentid does not match parent myid.
                    // nothing we need to do here;
                    // it just moves on to check next parent myid.
                }
            } else {
                // parent myid does not exist or is blank
            }
        } else {
            // no more parent objects to loop through, so we need to check if a match was found
            // if no match was found, then parent was deleted or no longer exists, so we need to remove this child
        }
    } else {
        // parentid does match parent myid
    }
}

以下是控制台中的错误:

An error occurred at line: 145 in the jsp file: /apps/covidien/components/content/utilities/faq-node-process/faq-node-process.jsp
Syntax error on token "else", delete this token
142:                                 subtopicNode.save();
143:                                 // add new myid to list of existsing IDs so that it doesn't get reused
144:                                 existingMyIds.add(subtopicMyId);
145:                             } else {
146:                                 // if subtopic has myid already
147:                                 // compare the parentid to the parent myid
148:                                 String subtopicParentId = subtopicNode.getProperty("parentid").getString();

3 个答案:

答案 0 :(得分:0)

if和else语句的数量不相同。你有4个块,但有5个其他块。

答案 1 :(得分:0)

else无法在while之后使用。 <{1}}块中没有任何内容,所以它应该被删除。

这里有很多冗余代码。我的重写:

else

答案 2 :(得分:0)

五个else,有四个if,不匹配。 至少if的数量应超过else