有 Java 编程相关的问题?

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

java统计字符串x的实例,直到找到字符串y为止

我已经尝试了大约一个小时,但只成功地编写了一些只能计数或只能搜索的代码。我的目标是把一些东西放在一起,不仅可以查找特定字符串(我们称之为“STRINGTOFIND”),还可以计算另一个特定字符串(我们称之为“STRINGTOCOUNT”)的实例,直到找到“STRINGTOFIND”

我是这样计算的:

int count = 0;
Scanner scanner = new Scanner("example.xml");
while (scanner.hasNextLine()) {
   String nextToken = scanner.next();
   if (nextToken.equalsIgnoreCase("STRINGTOCOUNT"))
   count++;
}

下面是我如何找到(我想找到它的路线):

int lineN = 1; //set to 1 for the loop to return correct line number
Scanner scanner = new Scanner("example.xml");
while (scanner.hasNextLine()) {
    lineNum++;
    if("STRINGTOFIND".equals(scanner.nextLine().trim())) { 
        System.out.println("found on line: "+lineNum);
    }
}

我想寻找STRINGTOFIND,得到它的行号,让第一台扫描仪只计算STRINGTOCOUNT,直到那一行,但遗憾的是,我的编程技能还不够。所以我的问题是,既然我已经有了代码来做我想做的事情中的一件,我该如何组合这些呢


共 (1) 个答案

  1. # 1 楼答案

    只需在循环中使用两个if语句

    boolean foundString = false;
    int count = 0, lineNum = 1;
    while(scanner.hasNextLine()){
        String line = scanner.nextLine();
        if(line.equals("STRINGTOFIND")){
            foundString = true;
            break; // Break out of the loop
        }
        else if(line.equals("STRINGTOCOUNT")) count++;
        lineNum++;
    }
    // Code that uses "foundString" and/or "lineNum"
    

    此代码将统计与“STRINGTOCOUNT”匹配的行数,直到找到与“STRINGTOFIND”匹配的行,或者文件不再有未读行(lineNum将包含发生此情况的行号)