You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java代码中为何需判断line.indexOf('#') == 0?数据加载疑问

代码中line.indexOf('#') == 0的作用解释

你在代码里看到的line.indexOf('#') == 0,核心作用是跳过以#开头的注释行,具体拆解如下:

  1. 方法逻辑:line.indexOf('#')会返回字符#在当前行字符串里第一次出现的索引位置。如果返回值是0,说明这个字符是当前行的第一个字符(字符串索引从0开始计数)。
  2. 循环处理:代码里把这个判断和空行判断绑定,只要满足其中一个条件,就执行continue跳过当前循环——也就是说,空行和以#开头的行都不会被解析成Film对象。
  3. 设计意义:虽然你当前的filmovi.txt里没有注释行,但这个判断是为了让程序更健壮:后续如果要在文本文件里添加注释(比如说明字段含义、备注特定数据),直接写以#开头的行即可,程序会自动忽略这些行,不用修改代码逻辑。

举个实际例子,如果你的文本文件后续更新为:

# 电影数据列表
# 格式:ID;电影名称;时长(分钟)
1;The Shining;146
2;One Flew Over the Cuckoo's Nest;133
# 短电影分类
3;The Little Shop of Horrors;72

代码会自动跳过前两行和第四行注释,只处理有效数据行。

附上你提供的格式化后代码片段:

Path path = Paths.get(getClass().getClassLoader().getResource("filmovi.txt").toURI());
//path is content of filmovi.txt
List<String> lines = Files.readAllLines(path, Charset.forName("UTF-8"));
//I put that content in List

for (String line : lines) {
    line = line.trim();

    if (line.equals("") || line.indexOf('#') == 0)  //why we check '#'
        continue;
    String[] tokens = line.split(";");
    Long id = Long.parseLong(tokens[0]);
    String naziv = tokens[1];
    int trajanje  = Integer.parseInt(tokens[2]);

    filmovi.put(Long.parseLong(tokens[0]), new Film(id, naziv, trajanje));
    if(nextId<id)
        nextId=id;
}

内容的提问来源于stack exchange,提问作者VennaTT

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 05:04:53