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

Java按分隔符拆分纯单词存ArrayList,用Scanner读文件时列表为空

问题根源
  • 分隔符规则配置完全失效
    • 当前代码设置的分隔符正则" \\$ |[\\r\\n]+"仅匹配两类内容:前后带空格的字面美元符号序列、连续的回车/换行符
    • 普通文本中分隔单词的普通空格、各类标点符号均不被识别为分隔边界,无法完成单词拆分
    • 若测试文件内容全部为分隔符可匹配的字符(如全是换行、无其他有效文本),Scanner会跳过所有分隔内容,判定无有效token,读取循环不执行,最终ArrayList为空
  • 路径写法存在解析偏差风险
    • 代码中的路径为无盘符的根相对路径"\\Users\\marga\\Desktop\\objekt program\\oo2021\\w05_kontrolltoo1\\textHere.txt",Windows系统下会根据程序启动时的当前盘符解析路径,若盘符与文件实际所在盘符不一致,会出现文件访问失败的问题
    • 其他方式能完成全文字符计数,不代表当前Scanner关联的File对象指向的是实际的目标文件
修正方案
  1. 替换适配单词拆分需求的分隔符规则:使用正则[^a-zA-Z0-9]+作为分隔符,将所有连续的非字母、非数字内容(含空白、标点、特殊符号)作为拆分边界,自动过滤非文本内容
  2. 优化路径写法:使用带盘符的绝对路径,以正斜杠代替反斜杠,无需额外转义,兼容跨环境路径解析
  3. 增加空指针防护:在资源关闭环节增加null判断,避免文件打开失败时的空指针异常
可运行参考代码
import java.io.File;
import java.io.FileNotFoundException;
import java.util.ArrayList;
import java.util.Scanner;

public class PlaceForErrors {
    public static void main(String[] args) {
        Scanner scan = null;
        try {
            // 正斜杠路径,无需转义,避免盘符解析偏差
            scan = new Scanner(new File("C:/Users/marga/Desktop/objekt program/oo2021/w05_kontrolltoo1/textHere.txt"));
            // 非字母数字连续序列作为分隔符,自动过滤标点、空白
            scan.useDelimiter("[^a-zA-Z0-9]+");
           
            ArrayList<String> text = new ArrayList<String>();
            while (scan.hasNext()) {
                String token = scan.next().trim();
                if (!token.isEmpty()) {
                    text.add(token);
                }
            }
            
            for(String element : text){
                System.out.println(element);
            }
            System.out.println("列表为空校验结果:" + text.isEmpty());
    
        } catch (FileNotFoundException exception) {
            System.out.println(exception);
        }
        finally{
            if (scan != null) {
                scan.close();
            }
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.01 09:36:04