使用扫描仪测试一行是否为评论

时间:2017-02-05 00:28:41

标签: java java.util.scanner

我正在尝试扫描.ppm文件。我需要忽略以“#”开头的行。我怎么用扫描仪这样做? 如果我这样做

while((fileScanner.nextLine()).charAt(0)=='#'){
        //Go to next line
    }

然后,如果该行不以注释开头,那么我跳过该行,并且无法返回以获取该行中的相关数据。 任何人都知道怎么解决这个问题?

2 个答案:

答案 0 :(得分:2)

while (fileScanner.hasNextLine()) {
    String line = fileScanner.nextLine();
    if (line.startsWith("#")) {
        continue;
    }
    // Go to next line
}

以上是一个更适合的模式。当文件以注释结束时,原始代码有点问题。行也可以是空的,因此charAt不会这样做。

答案 1 :(得分:1)

让我们来看看你的while循环。

while((fileScanner.nextLine()).charAt(0)=='#'){

您说 “扫描下一行,如果第一个字符是'#',请执行循环体

这种方法存在一些问题:

  1. 一旦找不到评论,它就会停止循环。
  2. 没有任何行存储在变量中,它们只是被扔掉了。
  3. 为什么不利用continue声明,而不是从条件语句中读取文件?

    while (fileScanner.hasNextLine()) {
        String line = fileScanner.nextLine();
        if (line.charAt(0) == '#') {
            continue; // Found a comment, so skip this iteration.
        } else {
            // Do whatever you want with your non-comment line.
        }
    }
    

    注意:某些评论可能在其前面有空格,例如" # comment"。我假设你不关心那些。