You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java数组索引奇偶分组求和比较代码错误排查

代码问题排查

你的代码存在4个核心问题,都会导致运行结果不符合预期:

  • 求和变量作用域错误:sum1、sum2被声明在for循环内部,每次执行循环体都会把两个变量重置为0,最终只能累加当前读入的单个元素值,根本无法得到全部分组的总和。
  • 结果判断逻辑位置错误:你把总和对比、打印结果的代码写在了循环内部,会导致每输入一个数就打印一次对比结果,而不是等15个数字全部输入完成后输出最终对比结论。
  • 冗余逻辑:奇偶判断中else if (i % 2 != 0)属于多余判断,对整数来说,模2等于0和不等于0是完全互斥的两种情况,直接用else即可。
  • 语法与冗余声明问题:main方法上声明了throws IOException但全程没有使用IO流相关操作,属于无效声明;原代码括号闭合位置错误,会直接触发编译失败。
修正后可正常运行的代码
import java.util.Scanner;

public class Solution {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int[] numOfPeople = new int[15];
        // 求和变量声明在循环外,仅初始化一次,用于全程累加
        int evenIndexSum = 0;
        int oddIndexSum = 0;

        for (int i = 0; i < numOfPeople.length; i++) {
            numOfPeople[i] = scanner.nextInt();
            // 按当前索引的奇偶性分组累加
            if (i % 2 == 0) {
                evenIndexSum += numOfPeople[i];
            } else {
                oddIndexSum += numOfPeople[i];
            }
        }

        // 所有数据读取、累加完成后,仅做一次最终对比输出
        if (evenIndexSum > oddIndexSum) {
            System.out.println("В домах с четными номерами проживает больше жителей.");
        } else if (evenIndexSum < oddIndexSum) {
            System.out.println("В домах с нечетными номерами проживает больше жителей.");
        } else {
            System.out.println("Количество жителей в домах с четными и нечетными номерами одинаковое.");
        }
    }
}

补充说明:Java数组默认从索引0开始计数,如果你实际业务里的门牌号是从1开始编号(即第一个元素对应1号奇数门牌号),只需要把累加逻辑里的奇偶判断互换即可。

内容的提问来源于stack exchange,提问作者TheRedBaron43

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.01 01:39:18