如何通过用户输入填充数组并限制输入范围?附问题代码求排查
问题排查与修复方案
核心问题梳理
- 输入范围判断逻辑完全颠倒
你要限制输入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资源 } }
修复说明
- 修正输入范围判断:把
x>10改成x >=0 && x <=9,确保只有0-9的数才会被存入数组。 - 调整提示文本:把"6 numbers"改成"5 numbers"和数组长度匹配,修正拼写错误。
- 修复遍历逻辑:增强for循环中直接输出元素
num,而不是用元素当索引去访问数组。 - 添加
sc.close():及时关闭Scanner资源,避免资源泄漏。
内容的提问来源于stack exchange,提问作者MaCha
相关产品推荐
相关产品推荐

