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

Java Scanner无法读取最后一行的问题及解决方法

问题修复方案

你的代码无法读取最后一行的核心原因是:Scanner默认按空白字符(空格、换行、制表符)分割输入,而非严格按行处理,加上nextInt()读取后会残留换行符,可能干扰后续读取逻辑。以下是两种可靠的修复方式:

方案一:按行读取并分割(推荐)

直接读取整行内容,再按空格分割提取k和s,完全匹配你“每行对应一组数据”的需求:

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
sc.nextLine(); // 消耗掉n后面的换行符,避免影响后续行读取

for (int i = 0; i < n; i++) {
    String line = sc.nextLine();
    String[] parts = line.split(" ");
    int k = Integer.parseInt(parts[0]);
    String s = parts[1];
    // 这里添加对k和s的处理逻辑
}
sc.close();

方案二:修正原读取逻辑

如果坚持使用nextInt()和next(),只需确保输入格式严格符合要求,同时可以在循环后验证读取状态:

Scanner sc = new Scanner(System.in);
int n = sc.nextInt();

for (int i = 0; i < n; i++) {
    // nextInt()和next()会自动跳过所有空白字符,包括换行
    int k = sc.nextInt();
    String s = sc.next();
    // 处理k和s
}
sc.close();

这种方式要求输入的n组数据必须用空白分隔(不管是否换行),若最后一行读取失败,大概率是输入的实际数据组数与n不匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:02:32