为什么我的破坏标签错误?

时间:2015-08-24 15:28:52

标签: label break

嘿伙计们我试图突破一个for循环,搜索到所有文件并在找到文件后中断。我发现的最好的事情是标签中断,但它给出了一个错误,说它不存在你们可以看一看,看看我做错了什么?

    import java.nio.file.Files;
import java.nio.file.Paths;

import org.dom4j.Document;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.jaxen.dom4j.*;


public class Load 
{
    static String info = "";
    public static String LoadSum(String projNum)
    {
        info = "";
        try
        {
            searching:
            Files.walk(Paths.get("D:/workspace/Project Program/Projects/")).forEach(filePath ->
            {
                if(Files.isRegularFile(filePath))
                {
                    try 
                    {
                        System.out.println("Checking");
                        SAXReader reader = new SAXReader();
                        Document document = reader.read(filePath.toFile());
                        Node node = document.selectSingleNode("//Project/Info/ProjectNumber");
                        String projectNumber = node.getStringValue();
                        if(projNum.equals(projectNumber))
                        {
                            System.out.println("Found it");
                            node = document.selectSingleNode("//Project/Info/Name");
                            info += node.getStringValue() + " : ";
                            //node = document.selectSingleNode("//Project/Info/Owner");
                            info += "Owner" + " : ";
                            node = document.selectSingleNode("//Project/Info/Status");
                            info += node.getStringValue() + " : ";
                            break searching; // error here searching doe not exist
                        }
                    } 
                    catch (Exception e) 
                    {
                        e.printStackTrace();
                    }
                }
            });
        }
        catch(Exception e)
        {
            e.printStackTrace();
        }
        return info;
    }
    }
}

1 个答案:

答案 0 :(得分:0)

break语句不是循环语句,所以你不能使用它。

To forEach语句接受一个匿名函数,该函数应用于Paths.get("D:/workspace/Project Program/Projects/"))语句找到的所有元素。

您可以通过抛出异常(如果它适合您)来停止操作。

来源:Java Docs

编辑:考虑到你传递的是一个匿名函数,你可以用if语句包装所有的函数块,该语句依赖于在函数外定义的布尔变量:如果你找到了你切换变量的元素,所以对于下一个元素,它只是一个无操作。如果您想了解有关Java lambda表达式的更多信息,请查看here