Java接收打印数组元素时出现ArrayIndexOutOfBoundsException如何解决
错误根因
for循环执行结束后,计数变量i的值等于输入的长度n。Java数组下标从0开始计数,长度为n的数组合法下标范围是0 ~ n-1,此时访问arr[i]属于访问超出数组长度的非法下标,因此触发ArrayIndexOutOfBoundsException越界异常。
修复方案
如果需要打印所有录入的数组元素,可选择以下任意一种实现:
- 录入元素时同步打印
- 录入完成后单独遍历数组打印
- 直接调用JDK自带工具方法打印整个数组
修复后代码示例
import java.util.*; public class array{ public static void main(String args[]){ Scanner sc = new Scanner(System.in); System.out.print("\nEnter Limit:"); int n = sc.nextInt(); int arr[]=new int[n]; System.out.print("\nEnter Array Elements:"); // 录入数组元素,将i声明在循环内部可避免变量泄露导致的误访问 for(int i=0;i<n;i++){ arr[i]= sc.nextInt(); } // 方式1:遍历打印所有元素 System.out.println("\n录入的数组元素:"); for(int i=0;i<n;i++){ System.out.println(arr[i]); } // 方式2:调用工具类一行打印(可选,输出格式为[1, 2, 3]) // System.out.println(Arrays.toString(arr)); sc.close(); } }
内容的提问来源于stack exchange,提问作者Nimish Godbole
相关产品推荐
相关产品推荐

