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

如何通过用户输入填充数组并限制输入范围?附问题代码求排查

问题排查与修复方案

核心问题梳理

  • 输入范围判断逻辑完全颠倒
    你要限制输入0-9的数,但代码里写的是if(x>10)才存入数组,这意味着只有大于10的数才会被放进数组,和需求完全相反。而且提示里写的"6 numbers"但数组长度是5,前后不一致。
  • 增强for循环遍历错误
    增强for循环里的m是数组中的元素值,不是索引。你写System.out.println(a[m])会用元素值作为索引去访问数组,大概率会触发数组越界异常(比如元素是11的话,数组长度只有5,索引最大是4),或者输出错误的位置内容。
  • 提示文本拼写错误
    "beetween"应该修正为"between",避免误导用户。

修复后的完整代码

package javaCourseNumberArray.copy;
import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int[] a = new int[5]; 
        
        System.out.println("5 numbers quick... pick one between 0 and 9.");
        
        int x ;
        int y = 0;
        
        while (y < 5) {
            x = sc.nextInt();
            // 修正范围判断:只接受0-9的数
            if(x >= 0 && x <= 9) {
                a[y] = x;
                y++;
            } else {
                System.out.println("Invalid input! Please pick a number between 0 and 9.");
            }
        }
        
        // 修正遍历逻辑:直接输出元素值
        for (int num : a) {
            System.out.println(num);
        }
        sc.close(); // 关闭Scanner资源
    }
}

修复说明

  1. 修正输入范围判断:把x>10改成x >=0 && x <=9,确保只有0-9的数才会被存入数组。
  2. 调整提示文本:把"6 numbers"改成"5 numbers"和数组长度匹配,修正拼写错误。
  3. 修复遍历逻辑:增强for循环中直接输出元素num,而不是用元素当索引去访问数组。
  4. 添加sc.close():及时关闭Scanner资源,避免资源泄漏。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 03:54:12