假设我们试图在一个类中找到某个字符串,并假设该类将此字符串重复了几次。.contains()
每当找到第一个匹配项时,如何使方法停止?这是我的意思的示例:
for (File f : list) {
if (f.isDirectory()) {
walk(f.getAbsolutePath());
}
if (f.getName().endsWith(".java")) {
System.out.println("File:" + f.getName());
countFiles++;
Scanner sc2 = new Scanner(f);
while (sc2.hasNextLine()) {
count++;
String str = sc2.nextLine();
if (str.contains("@Test")) {
System.out.println("this is a test class");
}
如您所见,我正在尝试查找测试类,因此我正在寻找一种@Test
表示法,该程序运行良好,但是在这种情况下,其打印(这是一个测试类)的次数是我正在测试的类的四倍@Test
记号!
谢谢!
我也建议break语句:
break;
break语句将退出最里面的循环。continue语句将跳过该循环中的其余代码,并且由于您的循环以print语句结束,因此循环末尾的continue语句将不执行任何操作。
看起来您在每个文档上都有一个for循环,然后在文档中的每一行都有一个while循环,您的代码正在返回每个文档中找到您的字符串的每一行。
如果将单个break语句放在print语句之后,它将为找到文本的每个文件打印一行。
如果您希望它在第一个文件后停止,则需要创建一个标志,例如
boolean found = False;
然后将其放在打印下方的if语句中
found = True;
break;
然后在while循环的末尾添加以下代码:
if(found){break;}
当程序找到字符串的第一个实例时,它将标志设置为true并退出while循环,然后,由于该标志被设置为true,它将退出for循环并仅打印第一个实例后结束。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句