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

Scanner读取指定格式输入时跳过内容的问题求助

Scanner读取输入跳过行的问题分析与解决

嘿,我一眼就发现问题所在了——你的代码里连续调用了两次input.nextLine(),这就是导致输入行被跳过的核心原因!

问题根源

每次调用Scanner.nextLine()都会读取并消耗掉当前的一行输入。你在while循环的条件里先用了一次input.nextLine()来判断是否等于"-1",这行输入直接被消耗掉了;然后进入循环体后又调用了一次input.nextLine()去获取数据,相当于每轮循环跳过了一行原本要处理的输入,自然就出现了“跳过第一行和倒数第二行”的现象。

修正方案

解决思路很简单:把循环条件中读取的行先存储起来,复用这行数据进行判断和处理,避免重复调用nextLine()。同时,你原来通过charAt(0)取数字的方式不够健壮(比如遇到多位数就会出错),建议用字符串分割的方式来解析数对。

这里给你修正后的完整示例代码:

import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class InputProcessor {
    public static void main(String[] args) {
        Queue<int[]> jobs = new LinkedList<>(); // 假设队列存储int数组来保存数对
        Scanner input = new Scanner(System.in);
        System.out.println("Enter values (enter '-1' to stop): ");
        
        String line;
        while (input.hasNextLine()) {
            line = input.nextLine();
            // 先判断是否是终止指令
            if (line.equals("-1")) {
                break;
            }
            // 按空格拆分每个数对(比如"0, 0 1, 1"拆成["0, 0", "1, 1"])
            String[] pairs = line.split(" ");
            for (String pair : pairs) {
                // 按逗号+可选空格拆分,拿到两个数字
                String[] nums = pair.split(",\\s*");
                if (nums.length == 2) { // 确保格式正确
                    int firstNum = Integer.parseInt(nums[0]);
                    int secondNum = Integer.parseInt(nums[1]);
                    jobs.add(new int[]{firstNum, secondNum});
                }
            }
        }
        
        // 验证队列中的内容
        System.out.println("队列中的数对:");
        while (!jobs.isEmpty()) {
            int[] pair = jobs.poll();
            System.out.printf("%d, %d ", pair[0], pair[1]);
        }
        input.close();
    }
}

额外说明

  • 用split(",\\s*")可以兼容带空格或不带空格的数对格式(比如"0,0"或"0, 0"都能正确拆分)
  • 增加了格式校验(判断nums.length == 2),避免输入格式错误导致程序崩溃
  • 循环终止逻辑更清晰:读取到"-1"就跳出循环,不会漏掉最后一行输入

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 08:04:40