Java实现数组元素访问与整除判断:查找可被13、31整除的最大整数
原有代码的现存问题
- 变量作用域错误:
tempArray是if判断块内部的局部变量,在块外的遍历循环中直接引用会触发编译报错 - 遍历逻辑硬编码:循环条件固定写为
x <=5匹配数组长度,一旦后续数组长度调整,极易触发ArrayIndexOutOfBoundsException越界异常 - 核心功能缺失:未实现两类要求的操作,既没有完成数组元素除以指定值的处理逻辑,也没有编写查找可被13、31整除的最大整数的匹配逻辑
需求实现逻辑拆解
1. 数组元素访问与除以指定值操作
- 统一数组作用域,将数组定义在主方法可直接访问的范围,消除编译错误
- 遍历数组时直接读取每个元素,按预先定义的指定除数做整数除法:Java中int类型的除法会自动舍去小数部分,输出结果天然为整数,符合要求
- 指定除数可定义为全局常量,后续调整使用时无需修改遍历逻辑内部代码
2. 可被13、31整除的最大整数查找
- 预先定义两个整型变量,分别存储可被13整除的最大值、可被31整除的最大值,初始值设为
Integer.MIN_VALUE,避免固定初始值干扰比较结果 - 遍历数组时同步完成匹配判断:
- 若元素对13取模结果为0,就和当前存储的13类最大值做比较,数值更大则更新存储值
- 若元素对31取模结果为0,同理和当前存储的31类最大值做比较,更新匹配到的更大值
- 遍历完成后输出两个结果值,过程中所有运算均为整型,完全满足整数输出的要求;若数组无匹配元素,补充对应提示避免输出无意义的极值
修正后可直接运行的完整代码
public class Question03 { // 全局数组 public static int[] array; // 自定义指定的除数,可根据实际需求调整数值 private static final int DIVISOR = 2; // 存储匹配到的可被13、31整除的最大值 private static int maxDivisibleBy13; private static int maxDivisibleBy31; public static void main(String[] args) { // 无命令行参数时使用题目提供的测试数组 if (args == null || args.length == 0) { array = new int[]{39, 93, 26, 62, 13, 31}; } else { // 支持从命令行参数初始化数组,扩展使用场景 array = new int[args.length]; for (int i = 0; i < args.length; i++) { array[i] = Integer.parseInt(args[i]); } } // 初始化最大值为整型最小值,避免初始值干扰比较 maxDivisibleBy13 = Integer.MIN_VALUE; maxDivisibleBy31 = Integer.MIN_VALUE; System.out.println("=== 数组元素除以指定值(除数:" + DIVISOR + ")的结果 ==="); // 增强for循环遍历,避免数组越界 for (int element : array) { // 整数除法,自动舍去小数部分 int divideResult = element / DIVISOR; System.out.println("原元素值:" + element + ",除以" + DIVISOR + "后结果:" + divideResult); // 匹配可被13整除的元素,更新最大值 if (element % 13 == 0) { if (element > maxDivisibleBy13) { maxDivisibleBy13 = element; } } // 匹配可被31整除的元素,更新最大值 if (element % 31 == 0) { if (element > maxDivisibleBy31) { maxDivisibleBy31 = element; } } } System.out.println("\n=== 匹配结果 ==="); // 对无匹配元素的场景做友好提示 if (maxDivisibleBy13 != Integer.MIN_VALUE) { System.out.println("数组中可被13整除的最大整数:" + maxDivisibleBy13); } else { System.out.println("数组中不存在可被13整除的整数"); } if (maxDivisibleBy31 != Integer.MIN_VALUE) { System.out.println("数组中可被31整除的最大整数:" + maxDivisibleBy31); } else { System.out.println("数组中不存在可被31整除的整数"); } } }
使用测试数组
{39, 93, 26, 62, 13, 31}的运行输出示例:
=== 数组元素除以指定值(除数:2)的结果 ===
原元素值:39,除以2后结果:19
原元素值:93,除以2后结果:46
原元素值:26,除以2后结果:13
原元素值:62,除以2后结果:31
原元素值:13,除以2后结果:6
原元素值:31,除以2后结果:15=== 匹配结果 ===
数组中可被13整除的最大整数:39
数组中可被31整除的最大整数:62
内容的提问来源于stack exchange,提问作者leastbasket590
相关产品推荐
相关产品推荐

