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

如何成功运行Java Scanner?输入处理与数组存储问题求助

问题分析与修正方案

原代码核心问题

  • 控制台输入流是单向的,第一个循环已经读取并消费了所有输入整数,后续创建新Scanner也无法回溯重新读取。
  • 第一个循环中读取的整数未保存,后续尝试重新读取输入填充数组的逻辑完全无效。
  • 超出数量的判断条件错误:i > 9要等到第11个整数才触发提示,而题目要求最多9个整数,应该在第10个整数输入时(i >= 9)就判定超出。

修正后的代码

import java.util.Scanner;

public class LabProgram {
    public static void main(String[] args) {
        Scanner scnr = new Scanner(System.in);
        boolean tooMany = false;
        // 初始化数组最多容纳9个元素
        int[] v = new int[9];
        int count = 0;

        while (scnr.hasNextInt()) {
            int num = scnr.nextInt();
            if (count >= 9) {
                tooMany = true;
                System.out.println("Too many numbers");
                break;
            }
            v[count] = num;
            count++;
        }

        // 未超出数量时可使用数组(有效元素长度为count)
        if (!tooMany) {
            // 示例:打印验证数组内容
            System.out.println("输入的数组内容:");
            for (int i = 0; i < count; i++) {
                System.out.print(v[i] + " ");
            }
        }
    }
}

修正说明

  • 边读取输入边存入数组,一次完成计数与存储,避免输入流消费后的回溯问题。
  • 当输入数量达到9个后,再输入整数立即触发提示并终止循环。
  • 如果需要数组长度严格等于实际输入个数(不超过9),可在最后截断数组:
    int[] finalArray = java.util.Arrays.copyOf(v, count);
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 03:43:16