Java用for与if实现两个int数组逐位比较累加较大值至初始100总和的方法
现有代码的问题
- 完全没有用到题目要求的
for循环,靠手动写4组重复的if判断完成比较,冗余度极高 - 引入
ArrayList存储临时结果,和题目要求的“直接计算最终总和”的目标不匹配,属于不必要的实现 - 没有按要求设置初始值为100的总和变量,也没有实现“同位置相等则忽略、不等则累加较大值”的累加逻辑
- 所有比较逻辑都是硬编码写死的,如果数组长度调整就得手动改所有判断分支,没有通用性
符合题目要求的实现方式
核心逻辑完全贴合要求,不需要额外引入集合类:
- 保留现有两个4长度int数组的赋值逻辑
- 定义总和变量,初始值直接设为100
- 用for循环逐索引遍历两个数组,每个索引位置做判断:
- 同位置两值相等:直接跳过,不做任何操作
- 同位置两值不等:取两者中的较大值,加到总和上
- 循环结束后直接输出最终总和即可
修正后的可运行代码
class Main { public static void main(String[] args) { // 两个长度为4的int数组 int[] numbers = {20, 10, 7, 56}; int[] luvut = {20, 150, 7, 37}; // 总和初始值设置为100 int total = 100; // for循环逐索引遍历比较 for (int i = 0; i < numbers.length; i++) { int a = numbers[i]; int b = luvut[i]; // 相等直接忽略 if (a == b) { continue; } // 不等取较大值累加 total += a > b ? a : b; } System.out.println("最终总和:" + total); } }
针对现有给数组赋的测试值,最终输出的总和为306,计算过程为:初始100 + 索引1的较大值150 + 索引3的较大值56,相等的两个位置(索引0、索引2)直接忽略不计,完全符合题目规则。
内容的提问来源于stack exchange,提问作者user15265939
相关产品推荐
相关产品推荐

