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

如何将scan.nextLine()的输出传入另一个Scanner?Java技术问题

解决方法

方案1:将每行字符串包装成Scanner传入

你可以把读取到的text字符串,通过new Scanner(text)创建一个新的Scanner实例传给printDuplicates,匹配方法的参数类型。修改后的代码如下:

public static void inputStats(Scanner scan) throws FileNotFoundException {
    while (scan.hasNextLine()) {
        String text = scan.nextLine();
        // 将字符串包装为Scanner传入
        printDuplicates(new Scanner(text));
    }
}

如果担心资源泄漏,可以用try-with-resources自动关闭临时Scanner:

public static void inputStats(Scanner scan) throws FileNotFoundException {
    while (scan.hasNextLine()) {
        String text = scan.nextLine();
        try (Scanner lineScanner = new Scanner(text)) {
            printDuplicates(lineScanner);
        } // 自动关闭lineScanner
    }
}

方案2:修改printDuplicates的参数类型(更推荐)

既然你要处理的是单行文本,没必要强行传Scanner。直接把printDuplicates的参数改成String,在方法内部如果需要用Scanner处理该行内容,再创建Scanner即可,逻辑更清晰。

修改后的printDuplicates方法定义:

public static void printDuplicates(String line) {
    // 内部创建Scanner处理该行
    try (Scanner scan = new Scanner(line)) {
        // 原有的扫描逻辑
        // ...
    }
}

对应的调用代码保持printDuplicates(text);即可,不会再报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 10:15:59