Java程序频繁报ArrayOutOfBoundsException:2错误,求解决方法
解决Java数组越界异常及直角三角形判断程序优化
异常原因分析
Exception in thread "main" java.lang.ArrayOutOfBoundsException: 2 表示你尝试访问数组索引为2的元素,但当前数组的长度不足3(数组索引从0开始,索引2对应第三个元素)。在你的程序里,就是运行时没有传入足够的命令行参数,导致args数组的元素数量小于3,直接读取args[2]就触发了越界。
完整修复后的代码示例
public class RightTriangleChecker { public static void main(String[] args) { // 检查命令行参数数量 if (args.length != 3) { System.out.println("错误:请传入3个正整数作为三角形边长!"); return; } int side1, side2, side3; // 安全转换字符串参数为整数 try { side1 = Integer.parseInt(args[0]); side2 = Integer.parseInt(args[1]); side3 = Integer.parseInt(args[2]); } catch (NumberFormatException e) { System.out.println("错误:输入的必须是整数!"); return; } // 验证边长为正 if (side1 <= 0 || side2 <= 0 || side3 <= 0) { System.out.println("错误:边长必须是正整数!"); return; } // 判断是否为直角三角形(覆盖所有直角边组合) boolean isRightTriangle = (side1*side1 + side2*side2 == side3*side3) || (side1*side1 + side3*side3 == side2*side2) || (side2*side2 + side3*side3 == side1*side1); if (isRightTriangle) { System.out.println("这三个数可以构成直角三角形。"); } else { System.out.println("这三个数不能构成直角三角形。"); } } }
运行注意事项
- 编译后运行时,必须传入3个整数参数,比如:
java RightTriangleChecker 3 4 5 - 如果参数数量不够、不是整数或为非正数,程序会给出明确错误提示,避免异常。
内容的提问来源于stack exchange,提问作者mAirborne
相关产品推荐
相关产品推荐

